leetcode 224. Basic Calculator

https://www.cnblogs.com/grandyang/p/4570699.html

class Solution {
public:
    int calculate(string s) {
        int sign=1,res=0,n=s.size();
        stack<int> sta;
        for(int i=0;i<n;++i) {
            char c=s[i];
            if(c>='0') {
                int num=0;
                while(i<n&&s[i]>='0') num=num*10+(s[i++]-'0');
                res+=sign*num;
                --i;
            }
            else if(c=='+') sign=1;
            else if(c=='-') sign=-1;
            else if(c=='(') {
                sta.push(res);
                sta.push(sign);
                res=0;sign=1;
            }
            else if(c==')') {
                res*=sta.top();sta.pop();
                res+=sta.top();sta.pop();
            }
        }
        return res;
    }
};
原文地址:https://www.cnblogs.com/LiuQiujie/p/13199130.html