class Solution {
public:
    int solve(string s) {
        int S=0,n=0,i=0,N=0,C,l;char k='+';
        for(;i<s.size();i++){
            if(isdigit(s[i]))n=10*n+s[i]-48;
            if(s[i]=='('){
                for(l=++i,C=1;C;i++)C+=s[i]==')'?-1:s[i]=='(';
                n=solve(s.substr(l,--i-l));
            }if(i==s.size()-1||s[i]=='+'||s[i]=='-'||s[i]=='*')
                k=='*'?N*=n:(S+=N,N=k=='-'?-n:n),k=s[i],n=0;
        }return S+N;
    }
};

不用栈,递归做法,超简短