求在 逆波兰表示法 中算术表达式的值。
有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。
例如:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
详见:https://leetcode.com/problems/evaluate-reverse-polish-notation/description/
class Solution { public: int evalRPN(vector<string> &tokens) { if(tokens.size() == 0) return 0; stack<int> stk; for(int i = 0; i < tokens.size(); ++i) { string s = tokens[i]; if(s == "+" || s == "-" || s == "*" || s == "/") { if(stk.size() < 2) return 0; int num2 = stk.top(); stk.pop(); int num1 = stk.top(); stk.pop(); int result = 0; if(s == "+") result = num1 + num2; else if(s == "-") result = num1 - num2; else if(s == "*") result = num1 * num2; else if(s == "/") result = num1 / num2; stk.push(result); } else { stk.push(stoi(s)); } } return stk.top(); } };