|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zltzlt 于 2020-2-5 17:06 编辑
今天的题目:
累加数是一个字符串,组成它的数字可以形成累加序列。
一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。
给定一个只包含数字 0 ~ 9 的字符串,判断给定的字符串是否是累加数。
说明:累加序列里的数不会以 0 开头(可能会是 0),所以不会出现 1,2,03 或者 1,02,3 的情况。
示例 1:
输入:"112358"
输出:True
解释:累加序列为: 1, 1, 2, 3, 5, 8。1 + 1 = 2, 1 + 2 = 3, 2 + 3 = 5, 3 + 5 = 8。 示例 2:
输入:"199100199"
输出:True
解释:累加序列为: 1, 99, 100, 199。1 + 99 = 100, 99 + 100 = 199。
欢迎大家一起答题!
本帖最后由 TJBEST 于 2020-2-4 22:26 编辑
可能有点繁琐,但是结果应该没错
- def fun323(string):
- M = len(string)
- if M < 3:
- return False
- else:
- for u0 in range(1,(M//3)+1):
- for u1 in range(u0,((M - u0)//2)+1):
- num1 = string[0:u0]
- num2 = string[u0:(u0+u1)]
- if (len(num1) > 1 and num1[0]=='0') or (len(num2) > 1 and num2[0]=='0'):
- pass
- else:
- num1 = int(string[0:u0])
- num2 = int(string[u0:(u0+u1)])
- index = u0 + u1
- while index < M:
- temp = num1 + num2
- bits = len(str(temp))
- new = index + bits
- if new < M:
- if str(temp) == string[index:new]:
- num1 = num2
- num2 = int(string[index:new])
- index = new
- else:
- break
- elif new == M:
- if str(temp) == string[index:new]:
- return True
- else:
- break
- else:
- break
-
- num1 = string[0:u1]
- num2 = string[u1:(u0+u1)]
- if (len(num1) > 1 and num1[0]=='0') or (len(num2) > 1 and num2[0]=='0'):
- pass
- else:
- num1 = int(string[0:u1])
- num2 = int(string[u1:(u0+u1)])
- index = u0 + u1
- while index < M:
- temp = num1 + num2
- bits = len(str(temp))
- new = index + bits
- if new < M:
- if str(temp) == string[index:new]:
- num1 = num2
- num2 = int(string[index:new])
- index = new
- else:
- break
- elif new == M:
- if str(temp) == string[index:new]:
- return True
- else:
- break
- else:
- break
- return False
复制代码
|
|