假设每一个符号为最后一步,若没有符号,只需返回字符串对应的数即可
【如2*3-4*5】
(2)*(3-4*5)、(2*3)-(4*5)、(2*3-4)*5
class Solution {
public:
int calcu(char e,int a,int b){
switch(e){
case '+': return a+b;
case '-': return a-b;
case '*': return a*b;
case '/': return a/b;
default: return 0;
}
}
vector<int> diffWaysToCompute(string input) {
vector<int> ans,tmp1,tmp2;
string k="+-/*";
if(input.find_first_of(k)==string::npos) return vector<int>(1,stoi(input));
for(int i=0;i<input.size();++i){
switch(input[i]){
case '+':
case '-':
case '*':
case '/':
tmp1=diffWaysToCompute(string(input,0,i));
tmp2=diffWaysToCompute(string(input,i+1,input.size()));
for(auto& x1:tmp1)
for(auto& x2:tmp2)
ans.push_back(calcu(input[i],x1,x2));
break;
default:
break;
}
}
return ans;
}
};