美文网首页
LeetCode-EvaluteReversePolishNot

LeetCode-EvaluteReversePolishNot

作者: 杨柳岸小鹏残月 | 来源:发表于2017-07-17 00:34 被阅读13次

    题目:

    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
    

    分析:

    求解逆波兰表达式,从公式中提取字符串,如果是操作数就push进栈中,如果是操作符就从栈中pop出两个数,用第二个数和第一个数做运算.

    AC代码:

    //求解逆波兰表达式
    class Solution {
    public:
        int evalRPN(vector<string>& tokens) {
            stack<int> num;
            for(auto token:tokens){
                if(token == "+" || token == "-" || token == "*"||token == "/"){
                    int a, b, ans;
                    b = num.top(); num.pop();
                    a = num.top(); num.pop();
                    if(token == "+")
                        ans = a + b;
                    if(token == "-")
                        ans = a - b;
                    if(token == "*")
                        ans = a * b;
                    if(token == "/")
                        ans = a / b;
                    num.push(ans);
                }
                else{
                    num.push(stoi(token));
                }
            }
            return num.top();
        }
    };
    

    相关文章

      网友评论

          本文标题:LeetCode-EvaluteReversePolishNot

          本文链接:https://www.haomeiwen.com/subject/vqaxkxtx.html