Example #1
0
 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);
     
 }
Example #2
0
 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;
 }
Example #3
0
 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;
 }
Example #4
0
 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;
     
     
 }