2022-7-1
题目链接:https://leetcode.cn/problems/different-ways-to-add-parentheses/
个人题解:
- 首先是DFS深搜来解决
- 开一个数组,来存数字和字符,取出数字采用双指针即可
- DFS递归两边,设置左右两个参数,分别计算
代码:
class Solution {
public:
vector<string> res;
vector<int> diffWaysToCompute(string s) {
int n=s.size();
for(int i=0;i<n;i++){
if(isdigit(s[i])){
int j=i,x=0;
while(j<n && isdigit(s[j])) x=x*10+(s[j++]-'0');
i=j-1;
res.push_back(to_string(x));
}
else res.push_back(s.substr(i,1));
}
int len=res.size();
return dfs(0,len-1);
}
vector<int> dfs(int l,int r){
if(l== r) return {stoi(res[l])};
vector<int> vec;
for(int i=l+1;i<r;i+=2){
auto left=dfs(l,i-1),right=dfs(i+1,r);
for (auto x: left){
for (auto y: right) {
int z;
if(res[i]=="+") z=x+y;
else if(res[i]=="-") z=x-y;
else z=x*y;
vec.push_back(z);
}
}
}
return vec;
}
};
运行截图: