LeetCode 0306. Additive Number Solution in Java, C++, Python & Go | Explanation + Code

CoderIndeed
0
0306. Additive Number

Description

An additive number is a string whose digits can form an additive sequence.

A valid additive sequence should contain at least three numbers. Except for the first two numbers, each subsequent number in the sequence must be the sum of the preceding two.

Given a string containing only digits, return true if it is an additive number or false otherwise.

Note: Numbers in the additive sequence cannot have leading zeros, so sequence 1, 2, 03 or 1, 02, 3 is invalid.

 

Example 1:

Input: "112358"
Output: true
Explanation: 
The digits can form an additive sequence: 1, 1, 2, 3, 5, 8. 
1 + 1 = 2, 1 + 2 = 3, 2 + 3 = 5, 3 + 5 = 8

Example 2:

Input: "199100199"
Output: true
Explanation: 
The additive sequence is: 1, 99, 100, 199. 
1 + 99 = 100, 99 + 100 = 199

 

Constraints:

  • 1 <= num.length <= 35
  • num consists only of digits.

 

Follow up: How would you handle overflow for very large input integers?

Solutions

Solution 1

PythonJavaC++Go
class Solution: def isAdditiveNumber(self, num: str) -> bool: def dfs(a, b, num): if not num: return True if a + b > 0 and num[0] == '0': return False for i in range(1, len(num) + 1): if a + b == int(num[:i]): if dfs(b, a + b, num[i:]): return True return False n = len(num) for i in range(1, n - 1): for j in range(i + 1, n): if i > 1 and num[0] == '0': break if j - i > 1 and num[i] == '0': continue if dfs(int(num[:i]), int(num[i:j]), num[j:]): return True return False(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !