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 };

 

posted @ 2020-04-16 23:10  Jinxiaobo0509  阅读(115)  评论(0)    收藏  举报