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 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题