leetcode - 224. 基本计算器
题目
代码
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int calculate(string s) {
int n = s.size();
int res = 0;
int sign = 1, i = 0;
stack<int> op;
op.push(1);
while(i < n){
if(s[i] == ' '){
}else 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();
}else{
int tn = 0;
while(i < n && '0' <= s[i] && s[i] <= '9'){
tn = tn * 10 + s[i] - '0';
i++;
}
res += sign * tn;
i--;
}
i++;
}
return res;
}
int main(){
int res;
string s;
cin>>s;
res = calculate(s);
cout<<res;
return 0;
}