变量简洁正确完整思路
需要所有答案用 dfs获得数组,可以计算出s的所有可能值的数组,fori si=+-*则调用dfs dfs算出+-*两端s的值的数组vec1vec2,for vec1forvec2根据+-*更新ans,如果没有+-*也要返回本身,有的话
返回ans
class Solution {
public:
    vector<int> diffWaysToCompute(string expression) {
        return dfs(expression);
    }
    vector<int>dfs(string s){
        vector<int>ans;
        bool hadFlag=false;
        for(int i=0;i<s.size();i++){
            if(s[i]=='+'||s[i]=='-'||s[i]=='*'){
                hadFlag=true;
                vector<int>vec1=dfs(string(s,0,i));
                vector<int>vec2=dfs(string(s,i+1,s.size()));
                for(int num1:vec1){
                    for(int num2:vec2){
                        if(s[i]=='+')ans.push_back(num1+num2);
                        if(s[i]=='-')ans.push_back(num1-num2);
                        if(s[i]=='*')ans.push_back(num1*num2);
                    }
                }
            }
        }
        if(!hadFlag)return {stoi(s)};
        return ans;
    }
};

 

posted on 2021-08-09 23:27  offer快到碗里来~  阅读(34)  评论(0)    收藏  举报