241. 为运算表达式设计优先级

 1 class Solution 
 2 {
 3 public:
 4     vector<int> diffWaysToCompute(string input) 
 5     {
 6         vector<int> res;
 7         for(int i=0; i<input.size(); i++) 
 8         {
 9             if(input[i] == '+' || input[i] == '-' || input[i] == '*') 
10             {
11                 vector<int> left = diffWaysToCompute(input.substr(0, i));
12                 vector<int> right = diffWaysToCompute(input.substr(i+1));
13                 for(int j=0; j<left.size(); j++) 
14                 {
15                     for(int k=0; k<right.size(); k++) 
16                     {
17                         if(input[i] == '+')
18                             res.push_back(left[j] + right[k]);
19                         else if(input[i] == '-') 
20                             res.push_back(left[j] - right[k]);
21                         else
22                             res.push_back(left[j] * right[k]);
23                     }
24                 }
25             }
26         }
27         if(res.empty()) res.push_back(stoi(input));
28         return res;
29     }
30 };

 

posted @ 2020-04-12 20:38  Jinxiaobo0509  阅读(143)  评论(0)    收藏  举报