Evaluate Reverse Polish Notation

Posted wxquare的学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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{
private:
    bool isOperator(string s){
        if(s.length()==1 && string("+-*/").find(s) != string::npos)
            return true;
        else
            return false;
    }
public:
    int evalRPN(vector<string>& tokens){
        stack<int> s;
        for (string token : tokens){
            if(!isOperator(token)){
                s.push(stoi(token));
            }else{
                int y = s.top();
                s.pop();
                int x = s.top();
                s.pop();
                if(token == "+"){
                    s.push(x+y);
                }else if(token == "-"){
                    s.push(x-y);
                }else if(token == "*"){
                    s.push(x*y);
                }else if(token == "/"){
                    s.push(x/y);
                }
            }
        }
        return s.top();
    }
};

 

以上是关于Evaluate Reverse Polish Notation的主要内容,如果未能解决你的问题,请参考以下文章