主页 > 知识库 > Golang最大递减数算法问题分析

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,最大,递,减数,算法,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Golang最大递减数算法问题分析》相关的同类信息!
  • 本页收集关于Golang最大递减数算法问题分析的相关信息资讯供网民参考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推荐文章