bool isAdditiveNumberHelper(string &num, int start, string &first, string &second) { if(start+first.size()+second.size() == num.size()) return true; string answer = add(first,second); if(num.substr(start+first.size()+second.size(), answer.size()) != answer) return false; return isAdditiveNumberHelper(num, start + first.size(),second, answer); }
bool isAdditiveNumberHelper(string& n1, string& n2, string& n3){ string add = StringAdd(n1, n2); if (add.size() > n3.size()) return false; if (add == n3 ) return true; //split the n3 to 2 parts, and keep going. string cut = n3.substr(0, add.size()); if (add == cut) { string rest = n3.substr(add.size()); return isAdditiveNumberHelper(n2, add, rest); } return false; }
bool isAdditiveNumber(string num) { int len = num.size(); for(int i=1; i<len/2+1; i++) { string n1 = num.substr(0, i); if ( n1.size()>1 && n1[0] == '0') break; for(int j=i+1; j<len; j++) { string n2 = num.substr(i, j-i); if ( n2.size()>1 && n2[0] == '0') break; string n3 = num.substr(j); if (isAdditiveNumberHelper(n1, n2, n3)) return true; } } return false; }
bool isAdditiveNumber(string num) { string first; for(int i = 0; i < int(num.size())-2; ++i) { first += num[i]; if(first.size()>1&&first[0] == '0') break; string second; for(int j = i+1; j < int(num.size())-1; ++j) { second += num[j]; if(second.size()>1&&second[0] == '0') break; if(isAdditiveNumberHelper(num, 0,first, second)) return true; } } return false; }