weixin_42338831 2019-08-01 22:26 采纳率: 50%
浏览 1040
已结题

Python3 写一个函数(function)找出最长的连续增长的子数字串,如果有多个长度一样的子数字串

,就把其中最大的一个打印出来。比如输入 137210,就打印 137;输入是27648923679就打印23679;输入是134127689就打印689;输入是1001,就打印1;如果输入的不是整数,就打印“not an integer”(用异常处理try...except);输入是123345,就打印345;输入是12738,就打印127(不是打印138,因为一定要连续的不能跳过数字)
如果输入是0134,就打印134,因为只能从大于0的数开始
限制:切片,for循环,列表解析式,lambda函数不能用
一定要用到while循环来做,不要用算法

def longestDigitRunSequence(n):
    if n<0:
        n-=n
    count=1
    prev=n%10
    num=n%10
    n=n/10
    max=0
    while n:
        digit=n%10
        if digit>=prev:
            if count>max:
                longest=num
                max=count
            elif count==max:
                if num>longest:
                    longest=num
            count=1
            prev=digit
            num=digit
        else:
            num=digit*10**count+num
            prev=digit
            count+=1
        n=n/10
    if count>max:
        longest=num
        max=count
    elif count==max:
        if num>longest:
            longest=num
    return longest

我这个代码在python3会有overflow error(错误),请问谁知道这题怎么写才对?

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-08-02 10:02
    关注

    不要当作数字处理,而是应该用str转换成字符串,然后当作字符串处理。因为输入的数字序列过长,会超过整数范围造成溢出

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置