码迷,mamicode.com
首页 > 其他好文 > 详细

Evaluate Reverse Polish Notation

时间:2016-10-03 12:36:18      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/wxquare/p/5928928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!