我需要编写一个函数,它将数字中的连续数字相加并返回它们的最大总和。我写了一个接收参数的函数,(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)
答案 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