• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Golang最大递减数算法问题分析

    本文实例讲述了Golang最大递减数算法问题。分享给大家供大家参考,具体如下:

    给出一个非负整数,找到这个非负整数中包含的最大递减数。一个数字的递减数是指相邻的数位从大到小排列的数字。

    如: 95345323,递减数有:953,95,53,53,532,32, 那么最大的递减数为953。

    如果输入的数字为负数,返回-1。

    如果找不到递减数,也返回-1.

    代码实现:

    复制代码 代码如下:
    package huawei
    import (
        "fmt"
        "sort"
        "strconv"
    )
    func Test5Base() {
        num := 431492
        degressiveNums := getDegressiveNums(num)
        max := -1
        if len(degressiveNums) > 0 {
            max = getMax(degressiveNums)
        }
        fmt.Println("max:", max)
    }
    //获取num的所有递减数
    func getDegressiveNums(num int) []int {
        if num 0 {
            return []int{-1}
        }
        degressiveNums := make([]int, 0)
        numStr := strconv.Itoa(num)
        length := len(numStr)
        //长度为i的子串
        for i := 2; i length; i++ {
            //从j开始截取
            for j := 0; j length-i+1; j++ {
                //截取数字
                n, err := strconv.Atoi(numStr[j : j+i])
                checkError(err, "string to integer")
                //是否为递减数
                if isDegressive(n) {
                    degressiveNums = append(degressiveNums, n)
                }
            }
        }
        return degressiveNums
    }
    //判断数字num是否是递减数
    func isDegressive(num int) bool {
        weishu := make([]int, 0)
        for num >= 1 {
            n := num % 10
            weishu = append(weishu, n)
            num /= 10
        }
        return sort.IntsAreSorted(weishu)
    }
    //获取一个slice中最大的数
    func getMax(nums []int) int {
        if len(nums) == 0 {
            panic("empty slice.")
        }
        max := nums[0]
        for i := 1; i len(nums); i++ {
            if nums[i] > max {
                max = nums[i]
            }
        }
        return max
    }

    希望本文所述对大家Go语言程序设计有所帮助。

    您可能感兴趣的文章:
    • Golang排列组合算法问题之全排列实现方法
    • Golang算法问题之整数拆分实现方法分析
    • Golang算法问题之数组按指定规则排序的方法分析
    • Golang算法之田忌赛马问题实现方法分析
    • Golang正整数指定规则排序算法问题分析
    • Go语言实现的树形结构数据比较算法实例
    • Go语言算法之寻找数组第二大元素的方法
    • go语言睡眠排序算法实例分析
    • GO语言利用K近邻算法实现小说鉴黄
    • golang实现分页算法实例代码
    上一篇:Golang编程实现删除字符串中出现次数最少字符的方法
    下一篇:Golang正整数指定规则排序算法问题分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Golang最大递减数算法问题分析 Golang,最大,递,减数,算法,