输入:s = “3+2*2”
输出:7
一个栈用来存储数字,一个栈用来存储运算符。
为什么运算符要存储? 因为不确定后面有没有运算级更高的出现,如果有,后面的先算,所以存储在这里等待后面的可能性。
当后面的字符出现,如果没有运算级别比栈顶高: + 后面出现 -, 那就说明此时这两个元素间是按顺序计算的,所以 - 放进去之前,+要弹出先行计算了,把结果放入数字栈后,-才入栈。
运算符栈中最多有两个元素 (+ or -), (* or /)
int calculate(string s) {
stack<int>waitNums;
stack<char>waitCh;
long long num = 0;
for(char ch:s){
if( ch == ' ')
continue;
else if( '0' <= ch && ch <= '9')
num = num *10 + ch -