leetcode224. 基本计算器

分析

只有加减法,可以把括号全都展开来写,例如 2 - (1 - 3)展开成 2 - 1 + 3。

class Solution {
public:
    stack<int> op;
    int calculate(string s) {
        op.push(1);
        int sign=1,num=0,ans=0;
        for(int i=0;i<s.length();i++){
            if(s[i]==' ')continue;
            if(s[i]>='0'&&s[i]<='9'){
                num=num*10+(s[i]-'0');
                continue;
            }
            ans+=sign*num;
            num=0;
            if(s[i]=='+')sign=op.top();
            else if(s[i]=='-')sign=-op.top();
            else if(s[i]=='(')op.push(sign);
            else if(s[i]==')')op.pop();
        }
        ans+=sign*num;
        return ans;
    }
};