Leetcode 150. Evaluate Reverse Polish Notation (Medium) (cpp)
Tag: Stack
Difficulty: Medium
/*
150. Evaluate Reverse Polish Notation (Medium)
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, /. Each operand may be an integer or another expression.
Some examples:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
*/
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> s;
for (auto t : tokens) {
if (t == "+" || t == "-" || t == "*" || t == "/") {
int num2 = s.top();
s.pop();
int num1 = s.top();
s.pop();
if (t == "+") s.push(num1 + num2);
if (t == "-") s.push(num1 - num2);
if (t == "*") s.push(num1 * num2);
if (t == "/") s.push(num1 / num2);
}
else s.push(stoi(t));
}
return s.top();
}
};