首页 > 代码库 > Evaluate Reverse Polish Notation

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