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); 10 11 auto res = std::mismatch(pre.begin(), pre.end(), num.substr(next).begin()); 12 if (res.first != pre.end()) break; 13 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 };