class Solution {
/**
*先确认第一个数和第二个数,其中第三个数必须必第一个数的长度和第二个数的长度要长
*确认第一和第二个数之后,再用递归来验证是否是递增序列
*/
public boolean isAdditiveNumber(String num) {
//先要确认前两个数
int l = num.length();
for(int i = 1 ; i < l ; i++)
{
if(i >= 2 && num.startsWith("0"))break;
for(int j = i + 1 ; j < l ; j++)
{
if(j - i >= 2 && num.charAt(i) == '0')break;
if((l - j) >= ( j - i) && (l - j) >= i)
{
long num1 = Long.parseLong(num.substring(0,i));
long num2 = Long.parseLong(num.substring(i,j));
if(isequles(num.substring(j), num1 , num2))
return true;
}
}
}
return false;
}
public boolean isequles(String num , long num1 , long num2)
{
if(num.equals(""))return true;
long r = num1 + num2;
String sum = ""+r;
if(!num.startsWith(sum))
return false;
return isequles(num.substring(sum.length()) ,num2 , r);
}
}
leetcode 306. 累加数
最新推荐文章于 2022-04-10 18:58:28 发布