[leetcode]241. Different Ways to Add Parentheses
Analysis
ummmm—— [每天刷题并不难。。。其实已经很多天没刷了]
Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +, - and *.
遍历input,遇到运算符就把input分成两部分,然后再分别遍历两个部分。其实这题就是让我们忽略运算符的优先级,计算出式子的所有可能结果。
Implement
class Solution {
public:
vector<int> diffWaysToCompute(string input) {
vector<int> res;
int len = input.size();
for(int i=0; i<len; i++){
if(input[i] == '+' || input[i] == '-' || input[i] == '*'){
vector<int> left = diffWaysToCompute(input.substr(0, i));
vector<int> right = diffWaysToCompute(input.substr(i+1));
for(auto l:left){
for(auto r:right){
if(input[i] == '+')
res.push_back(l+r);
else if(input[i] == '-')
res.push_back(l-r);
else if(input[i] == '*')
res.push_back(l*r);
}
}
}
}
if(res.size() == 0)
res.push_back(atoi(input.c_str()));
return res;
}
};