class Solution{
public boolean isAdditiveNumber(String num){
return backtrack(num, 0, 0, 0, 0);
}
private boolean backstrack(String num, int index, long presum, long prenum, int k){
if(k>2&& index>=num.length()) return true;
for(int len = 1; len + index<=num.length();len++){
long f = isSum(presum, num, index, index+len-1, k);
if(f>=0){
if(backtrack(num, index+len, f+prenum, f, k+1)) return true;
}
}
return false;
}
private long isSum(long sum,String num, int l, int h, int k){
if(num.charAt(1)=='0' && l<h) return -1;
long s =0;
while(l<=h){
s=s*10+num.charAt(l)-'0';
l++;
}
if(k<2) return s;
return sum=s?s:-1;
}
}
算法-累加数
最新推荐文章于 2021-01-20 15:28:55 发布