306. 累加数
1 class Solution 2 { 3 public: 4 bool isAdditiveNumber(string num) 5 { 6 int n = num.size(); 7 for(int i = 0;i < n - 2;i++) 8 { 9 if(i != 0 && num[0] == '0') continue; 10 for(int j = i + 1;j < n - 1;j ++) 11 { 12 if(j != i+1 && num[i+1] =='0')continue;//"1023"->"1"和"02"直接退出 13 long num1 = stol(num.substr(0,i+1)); 14 long num2 = stol(num.substr(i+1, j-i)); 15 long num3 = (num1+num2); 16 if( to_string(num3) == num.substr(j+1, to_string(num3).size())) 17 { 18 string all = num.substr(0, j+1+to_string(num3).size()); 19 while(all.size() < num.size()) 20 { 21 num1 = num2; 22 num2 = num3; 23 num3 = num1+num2; 24 all+= to_string(num3); 25 } 26 if(all == num) return true; 27 } 28 } 29 } 30 return false; 31 } 32 };
Mamba never out

浙公网安备 33010602011771号