题目描述
思路分析
表达式树的递归
但后缀表达式可以简化为栈:开个
i
n
t
int
int栈,遇到计算符就弹出两个数运算,再将运算后的值加入栈。
代码实现
class Solution {
public:
stack<int> stk;
void eval(string s){
int b=stk.top();stk.pop();
int a=stk.top();stk.pop();
if(s=="+") stk.push(a+b);
else if(s=="-") stk.push(a-b);
else if(s=="*") stk.push(a*b);
else stk.push(a/b);
}
int evalRPN(vector<string>& tokens) {
unordered_set<string> S={"+","-","*","/"};
for(auto p:tokens){
if(S.count(p)) eval(p);
else stk.push(stoi(p));
}
return stk.top();
}
};