您的位置:首页 > 编程语言 > Lua

[leetcode-150]Evaluate Reverse Polish Notation(c++)

2015-08-20 15:25 573 查看
问题描述:

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

Show Tags

Show Similar Problems

分析:这道题比较普通,倒是c++的语法折磨了我好长,c++里面不能用switch来比较string,也就是switch(string)是错误的。于是我想到strcmp,但是也是错误的,后来改成==就可以了

代码如下:16ms

[code]class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        stack<int> stack;
        int size = tokens.size();

        for(int i = 0;i<size;i++){
            string str = tokens[i];
            int first;
            int second;

            if(str=="+"){
                 second = stack.top();stack.pop();
                 first = stack.top();stack.pop();
                stack.push(second+first);
            }else if(str=="-"){
                second = stack.top();stack.pop();
                first = stack.top();stack.pop();
                stack.push(first-second);
            }else if(str=="*"){
               second = stack.top();stack.pop();
               first = stack.top();stack.pop();
                stack.push(first*second); 
            }else if(str=="/"){
               second = stack.top();stack.pop();
                first = stack.top();stack.pop();
                stack.push(first/second); 
            }else{
                    //为整数,解析并压栈
                int val = atoi(str.c_str());
                stack.push(val);
              }
        }
        return stack.top();
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: