class Solution {
private:
bool istrue=false;
void judge(vector<long> l,int start,string &num)
{
if(start>=num.size())
{
if(l.size()>=3)
{
int i;
for(i=2;i<l.size();i++)
{
if(l[i-1]+l[i-2]!=l[i])
break;
}
if(i==l.size())
istrue=true;
}
return;
}
for(int i=start;i<num.size()&&i-start<18;i++)//遍历所有的结束位置
{
if(num[start]=='0'&&i!=start)
return;
string temp=num.substr(start,i-start+1);
long number=stol(temp);
l.push_back(number);
judge(l,i+1,num);
if(istrue==true)
return;
l.pop_back();
}
}
public:
bool isAdditiveNumber(string num) {
istrue=false;
if(num.size()<3)
return istrue;
vector<long> l;
judge(l,0,num);
return istrue;
}
};
306. Additive Number
最新推荐文章于 2019-05-13 00:26:17 发布