题目大意:根据逆波兰表达式法,求表达式的值
分析:栈。token为数字时入栈,token为运算符时弹出两个栈顶元素,运算后入栈。注意题目给的string,string转int用stoi(str)。
代码:
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> s;
for (string token : tokens) {
if (token == "+") {
int a = s.top();
s.pop();
int b = s.top();
s.pop();
s.push(b + a);
} else if (token == "-") {
int a = s.top();
s.pop();
int b = s.top();
s.pop();
s.push(b - a);
} else if (token == "*") {
int a = s.top();
s.pop();
int b = s.top();
s.pop();
s.push(b * a);
} else if (token == "/") {
int a = s.top();
s.pop();
int b = s.top();
s.pop();
s.push(b / a);
} else {
s.push(stoi(token));
}
}
return s.top();
}
};