306. Additive Number
Additive Number
Solution
public class Solution {
public boolean isAdditiveNumber(String num) {
if (num == null || num.length() == 0) return false;
int size = num.length();
for(int i = 1; i <= size-1; i ++) {
String first = num.substring(0, i);
if (first.charAt(0) == '0' && first.length() >= 2) {
break;
}
for(int j = i+1; j < size; j ++) {
String second = num.substring(i, j);
if (second.charAt(0) == '0' && second.length() >=2) {
break;
}
if (verify(num, j, Long.valueOf(first), Long.valueOf(second))) {
return true;
}
}
}
return false;
}
private boolean verify(String num, int startIndex, long first, long second) {
if (startIndex > num.length()) {
return false;
}
if (startIndex == num.length()) {
return true;
}
long next = first + second;
String nextString = String.valueOf(next);
if (num.substring(startIndex).contains(nextString)) {
return verify(num, startIndex + nextString.length(), second, next);
} else {
return false;
}
}
}Last updated