样例都通过了 不知道哪里错了 一个栈放数字一个栈放符号 必回关注
#include <iostream>
#include <cstdio>
#include <stack>
#include <cctype>
using namespace std;
stack<int> num; // 数字栈
stack<char> ops; // 符号栈
int main()
{
string s;
cin >> s;
s+="+"; //补个加号处理最后一个数字
int cur = 0;
for (size_t i = 0; i < s.size(); i++)
{
if (isdigit(s[i]))
{
cur = cur * 10 + s[i] - '0';
}
else
{
if (!ops.empty() && ops.top() == '*')
{ // 如果是乘号 弹出 计算后 再压入num栈
ops.pop();
int t = num.top() * cur;
num.pop();
num.push(t);
ops.push('+');
}
else
{ // 加号直接压入
num.push(cur);
ops.push(s[i]);
}
cur = 0;
}
}
int res = 0;
while (!num.empty())
{
res += num.top();
num.pop();
}
cout << res % 10000;
return 0;
}