文章目录
- 题目
- [代码(10.1 首刷看解析)](#代码(10.1 首刷看解析))
题目
代码(10.1 首刷看解析)
cpp
class Solution {
public:
int calculate(string s) {
stack<int> sk; // 存储正负号
sk.push(1);
int sign = 1;
int res = 0;
int i = 0;
while(i < s.size()) {
if(s[i] == ' ') {
i++;
} else if(s[i] == '+') {
sign = sk.top();
i++;
} else if(s[i] == '-') {
sign = -sk.top();
i++;
} else if(s[i] == '(') {
sk.push(sign);
i++;
} else if(s[i] == ')') {
sk.pop();
i++;
} else {
long long num = 0;
while(i < s.size() && isdigit(s[i])) {
num = num*10+s[i]-'0';
i++;
}
res += num*sign;
}
}
return res;
}
};