[Leetcode]Evaluate Reverse Polish Notation

来源:互联网 发布:android 离线数据缓存 编辑:程序博客网 时间:2024/05/19 23:10

Evaluate Reverse Polish Notation
Total Accepted: 55506 Total Submissions: 249113 Difficulty: Medium

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

Subscribe to see which companies asked this question

根据操作符不同进行不同的操作,之后把运算结果重新压入栈中即可!

class Solution {public:    int evalRPN(vector<string>& tokens) {        int len  = tokens.size();        if(!len)    return 0;        stack<string> s;        int i = 0;        while(i <= len - 1){            if(!isOperator(tokens[i])){                s.push(tokens[i]);                ++i;            }            else if(isOperator(tokens[i])){                int r = stoi(s.top());                s.pop();                int l = stoi(s.top());                s.pop();                int res;                if(tokens[i] == "+"){                    res = l + r;                }                else if(tokens[i] == "-"){                    res = l - r;                }                else if(tokens[i] == "*"){                    res = l * r;                }                else if(tokens[i] == "/"){                    res = l / r;                }                s.push(to_string(res));                ++i;            }        }        return stoi(s.top());    }private:    bool isOperator(string s){        if(s == "+" || s == "-" || s == "*" || s == "/"){           return true;         }        else return false;    }};
0 0
原创粉丝点击