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
Follow up: How would you handle overflow for very large input integers?
Solutions
Solution 1
Thinking
An additive number concatenates at least three numbers, each after the second being the sum of the previous two. Once the first two addends are fixed, the rest of the string is determined.
Enumerate the split points of the first two numbers, skip leading zeros, and recursively check that each remaining prefix equals their sum. On a match, roll the pair forward; success means the string is consumed. The length bound keeps the enumeration feasible.