数字中连续数字的最大总和

时间:2013-11-09 23:19:44

标签: python python-3.x

我需要编写一个函数,它将数字中的连续数字相加并返回它们的最大总和。我写了一个接收参数的函数,(m,t)。 m-代表数字(int),t(int也代表)要求的连续数字的数字。现在我希望它遍历数字中的所有数字,并在结尾处返回最大值。 我不知道为什么我的代码不起作用:

def sum_digits(m, t):
    str_m= str(m)

    for i in range(len(str_m)):
        if t+i<len(str_m):
            num= str_n[i:t+i]
            num1='+'.join(num)
            num2= str(eval(num1))
            lst= list(num2)
        else:
            break


return max (lst)

2 个答案:

答案 0 :(得分:0)

您的工作不起作用的原因是lst每次迭代都会重置。我认为你打算在开始时设置它并在每次迭代时添加它。也:

AHHHH !!!!您不需要eval

def max_sum(m, t):
    digits = map(int, str(m))
    max_sum = cur_sum = sum(digits[:t])
    for i, x in enumerate(s[t:], t):
        cur_sum += x - digits[i - t]
        max_sum = max(max_sum, cur_sum)
    return max_sum

此外,这有O(log m)运行时间(如果n是m中的位数,则为O(n)),而不是天真的O(t * log m)(或O(t * n) )。

答案 1 :(得分:0)

>>> def maxSum(m, t):
...   m = str(m)
...   answer = 0
...   for digits in (m[i:i+t] for i in range(len(m)-t+1)):
...     answer = max(answer, sum(int(d) for d in digits))
...   return answer
... 
>>> maxSum(1234567, 3)
18