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

Evaluate Reverse Polish Notation

时间:2014-11-09 20:44:22      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   os   sp   for   

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

逆波兰式,不用说,肯定考虑栈。

 

主要是题目所给的是字符串的数组,需要多次进行数字到字符串或者字符串到数字的转换,具体实现参考我的blog,整数转字符串,字符串转整数

这里我采用的是c++标准库sstream来实现转换。

代码:

class Solution {
private:
    bool isSymbol(string a){
        return a=="+"||a=="-"||a=="*"||a=="/";
    }
    int Evaluate(int a,int b,char c){
        switch (c)
        {
        case +:
            return a+b;
            break;
        case -:
            return a-b;
            break;
        case *:
            return a*b;
            break;
        case /:
            return a/b;
            break;
        default:
            break;
        }
    }
public:
    int evalRPN(vector<string> &tokens) {
        stack<string> container;
        for(int i=0;i<tokens.size();++i){
            if(isSymbol(tokens[i])&&!container.empty()){
                string temp2Str=container.top();container.pop();
                string temp1Str=container.top();container.pop();
                int temp2;
                int temp1;
                stringstream s;
                s<<temp2Str;s>>temp2;
                s.clear();
                s<<temp1Str;s>>temp1;
                s.clear();
                
                stringstream s2;
                int res=Evaluate(temp1,temp2,tokens[i][0]);
                s2<<res;
                string resStr=s2.str();
                container.push(resStr);
            }else{
                container.push(tokens[i]);
            }
        }
         s;
        int result=0;
        string reultStr=container.top();
        s<<reultStr;
        s>>result;
        return result;
    }
};

 

Evaluate Reverse Polish Notation

标签:style   blog   http   io   color   ar   os   sp   for   

原文地址:http://www.cnblogs.com/fightformylife/p/4085810.html

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