class Solution {
public:
int calculate(string s) {
//使用方法是栈的使用
stack<int> nums;
stack<char> signs;
int flag = 0;
long num = 0;
int len = s.size();
for (int ii = 0; ii<len; ++ii)
{
char c = s[ii];
if (c >= '0'&&c <= '9')
{
num = num * 10 + c - '0';
if (s[ii + 1]<'0' || s[ii + 1]>'9' || ii == len - 1)
{
nums.push(num);
num = 0;
}
else
continue;
if (flag == 1)
{
int num1 = nums.top();
nums.pop();
int num2 = nums.top();
nums.pop();
int sign = signs.top();
signs.pop();
int new_num;
if (sign == '-')
new_num = num2 - num1;
if (sign == '+')
new_num = num2 + num1;
nums.push(new_num);
}
}
else if (c == '+' || c == '-')
{
signs.push(c);
flag = 1;
}
else if (c == '(')
flag = 0;
else if (c == ')')
{
if (nums.size() < 2)
continue;
int num1 = nums.top();
nums.pop();
int num2 = nums.top();
nums.pop();
int sign = signs.top();
signs.pop();
int new_num;
if (sign == '-')
new_num = num2 - num1;
if (sign == '+')
new_num = num2 + num1;
nums.push(new_num);
}
}
return nums.top();
}
};
基本计算器class Solution {public: int calculate(string s) { //使用方法是栈的使用 stack<int> nums; stack<char> signs; int flag = 0; long num = 0; int len = s.size(); for (int ii = 0; ii<l...