leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0306.cpp (868B)


0 class Solution {
1 public:
2 bool isAdditiveNumber(const string &num) {
3 for (int i = 1; i < num.size(); i++) {
4 long num1 = stol(num.substr(0, i));
5 for (int j = i + 1; j < num.size(); j++) {
6 long n1 = num1, n2 = stol(num.substr(i, j - i)), n3;
7 int next = j;
8 while (next < num.size()) {
9 const string pre = to_string(n3 = n1 + n2);
11 auto res = std::mismatch(pre.begin(), pre.end(), num.substr(next).begin());
12 if (res.first != pre.end()) break;
14 next += pre.size();
15 n1 = n2, n2 = n3;
16 }
17 if (next == num.size()) return true;
18 if (num[i] == '0') break;
19 }
20 if (num[0] == '0') break;
21 }
22 return false;
23 }
24 };