分析
只有加减法,可以把括号全都展开来写,例如 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;
}
};