Leetcode 241. 为运算表达式设计优先级

假设每一个符号为最后一步,若没有符号,只需返回字符串对应的数即可
【如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;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值