class Solution:
# dfs
def isAdditiveNumber(self, num: str) -> bool:
n = len(num)
if n < 3:
return False
def valid(p1, p2, j):
while j < n:
p = str(int(p1) + int(p2))
if num[j: j+len(p)] != p:
return False # 遇到一种相加不相等,则返回False
j += len(p) # j前进
p1, p2 = p2, p # 交替前进
return True
# 不能以 0 开头,除非是 0 本身,需要判断一下
for i in range(1, n//2+1) if num[0] != "0" else [1]:
for j in range(i+1, n) if num[i] != "0" else [i+1]:
p1 = num[:i] # 取第一个数
p2 = num[i:j] # 取第二个数
if valid(p1, p2, j): # 遍历当前序列是否符合,若出现一个符合条件的序列,则返回
return True
return False
306.【判断】累加数(Medium)
于 2021-07-18 17:29:55 首次发布