一、题目
二、题解
通过栈模拟:遍历tokens如果遇到数字就将数字入栈,如果碰到符号就从栈里弹出两个数字进行对应计算后将结果入栈,第一个弹出的数字为右操作数
class Solution {
public:
int evalRPN(vector<string>& tokens) {
int n = tokens.size();
int s[n], top = -1;
for (int i = 0; i < n; i++) {
if (tokens[i] == "*" || tokens[i] == "+" || tokens[i] == "/" || tokens[i] == "-") {
int right = s[top--], left = s[top--];
if (tokens[i] == "*") s[++top] = right * left;
else if (tokens[i] == "/") s[++top] = (int)(left / right);
else if (tokens[i] == "+") s[++top] = left + right;
else if (tokens[i] == "-") s[++top] = left - right;
} else {
s[++top] = stoi(tokens[i]);
}
}
return s[top];
}
};