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; } };
不用栈,递归做法,超简短