//逆波兰表达式 = 后缀表达式
//扫描表达式,遇到数字入栈,遇到运算符~时,从栈中依次pop出两个数a与b,进行b~a,再压入栈。
//直到扫描完毕,栈内仅有一个数字时,返回该数字。
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> num;
for(auto x : tokens){
if(x == "+"){
int a = num.top(); num.pop();
int b = num.top(); num.pop();
num.push(b+a);
}
else if(x == "-"){
int a = num.top(); num.pop();
int b = num.top(); num.pop();
num.push(b-a);
}
else if(x == "*"){
int a = num.top(); num.pop();
int b = num.top(); num.pop();
num.push(b*a);
}
else if(x == "/"){
int a = num.top(); num.pop();
int b = num.top(); num.pop();
num.push(b/a);
}
else{ //x为数字
num.push(stoi(x));
}
}
return num.top();
}
};