
变量简洁正确完整思路 需要所有答案用 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; } };
                    
                
                
            
        
浙公网安备 33010602011771号