https://leetcode.com/problems/additive-number/
understanding:
只要穷举前面两段的分割方式,然后check就行,square的复杂度。还可以使用递归。
ref: http://bookshadow.com/weblog/2015/11/18/leetcode-additive-number/
class Solution(object):
def isAdditiveNumber(self, num):
"""
:type num: str
:rtype: bool
"""
n = len(num)
for i in xrange(1, n):
for j in xrange(i + 1, n):
a1,a2 = num[:i], num[i:j]
if str(int(a1)) != num[:i] or str(int(a2)) != num[i:j]:
continue
while j < n:
part = str(int(a1) + int(a2))
if not num[j:].startswith(part):
break
else:
j += len(part)
a1 = a2
a2 = part
if j == n:
return True
return False