题目链接:https://leetcode.com/problems/evaluate-reverse-polish-notation/
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> st; for(auto str:tokens) { if(str == "+" || str == "-" || str == "*" || str == "/") { int b = st.top(); st.pop(); int a = st.top(); st.pop(); if(str == "+") st.push(a + b); if(str == "-") st.push(a - b); if(str == "*") st.push(a * b); if(str == "/") st.push(a / b); } else st.push(stoi(str)); } return st.top(); } };