您的位置:首页 > 其它

306. Additive Number LeetCode

2016-03-16 17:56 387 查看
题意:给出一个只包含数字的字符串,问是否可以分成至少3个数,前两个数相加等于第三个数。

题解:枚举前两项,有了前两项就可以递推出后面的值,然后递推到跟原字符串长度相等的时候停止,然后比较是否相等,相等说明可以。

class Solution {
public:
bool isAdditiveNumber(string num) {
int n = num.length();
for(int i = 1; i < n; i++)
{
for(int j = i + 1; j < n; j++)
{
string s1 = num.substr(0,i);
string s2 = num.substr(i,j - i);
long long d1 = atoll(s1.c_str());
long long d2 = atoll(s2.c_str());
if((s1.length() > 1 && s1[0] == '0') || (s2.length() > 1 && s2[0] == '0')) continue;
long long next = d1 + d2;
string nxt = to_string(next);
string now = s1 + s2 + nxt;
while(now.length() < num.length())
{
d1 = d2;
d2 = next;
next = d1 + d2;
nxt = to_string(next);
now += nxt;
}
if(now == num) return true;
}
}
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode