跳到主要内容

150 逆波兰表达式求值

https://leetcode.cn/leetbook/read/top-interview-questions-medium/xwaiag/

cost: 14m46s

class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> operands;
int res = 0;
auto getOperands = [&operands] {
int v2 = operands.top();
operands.pop();
int v1 = operands.top();
operands.pop();
return tuple<int, int>(v1, v2);
};
for (const string& token : tokens) {
if (token == "+") {
auto [v1, v2] = getOperands();
v1 += v2;
operands.push(v1);
} else if (token == "-") {
auto [v1, v2] = getOperands();
v1 -= v2;
operands.push(v1);
} else if (token == "*") {
auto [v1, v2] = getOperands();
v1 *= v2;
operands.push(v1);
} else if (token == "/") {
auto [v1, v2] = getOperands();
v1 /= v2;
operands.push(v1);
} else {
int v = std::stoi(token);
operands.push(v);
}
}
return operands.top();
}
};