LeetCode之Evaluate Reverse Polish Notation

原创 2015年07月10日 21:54:39
/*用栈模拟后缀表达式的求值过程。遍历字符串的容器:
1.遇到符号,将栈里面最上面的两个数字出栈进行符号表示的相应计算,并将结果入栈。
2.遇到数字,将数字入栈。
3.最后,栈顶元素即表达式的结果。*/
class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        if(tokens.empty()) return 0; 
        stack<int> nums;
        for(int i = 0; i < tokens.size(); ++i){
            if(tokens[i] == "+" || tokens[i] == "-"
            || tokens[i] == "*" || tokens[i] == "/"){
                int b = nums.top();
                nums.pop();
                int a = nums.top();
                nums.pop();
                if(tokens[i] == "+"){
                    a += b;
                    nums.push(a);
                }
                else if(tokens[i] == "-"){
                    a -= b;
                    nums.push(a);
                }
                else if(tokens[i] == "*"){
                    a *= b;
                    nums.push(a);
                }
                else if(tokens[i] == "/"){
                    a /= b;
                    nums.push(a);
                }
            }
            else nums.push(string2num(tokens[i]));
        }
        return nums.top();
    }
    
    int string2num(const string &s){
        int res(0);
        int sign(1);
        int i(0);
        while(i < s.size()){
            if(s[i] == '-') sign = -1;
            else if(s[i] == '+') sign = 1;
            else res = res * 10 + s[i] - '0';
            ++i;
        }
        return res * sign;
    }
};

【LeetCode】Evaluate Reverse Polish Notation 解题报告

【题意】 逆波兰表达式,又叫后缀表达式。 例如: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"]...
  • ljiabin
  • ljiabin
  • 2014年08月28日 20:57
  • 1705

【LeetCode-面试算法经典-Java实现】【150-Evaluate Reverse Polish Notation(计算逆波兰式)】

【151-Evaluate Reverse Polish Notation(计算逆波兰式)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Evaluate the val...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月20日 06:37
  • 2741

Java Evaluate Reverse Polish Notation(逆波兰表达式)

表达式:   ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9   ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)...
  • soszou
  • soszou
  • 2014年07月05日 16:06
  • 2723

【LeetCode刷题Java版】Evaluate Reverse Polish Notation(计算逆波兰表达式)

Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -...
  • bruce_6
  • bruce_6
  • 2014年10月13日 18:02
  • 2348

LeetCode 150 — Evaluate Reverse Polish Notation(C++ Java Python)

题目:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/ Evaluate the value of an arithm...
  • dragon_dream
  • dragon_dream
  • 2014年03月01日 15:34
  • 2478

LeetCode–Evaluate Reverse Polish Notation

LeetCode–Evaluate Reverse Polish Notation (LeetCode - 评价逆波兰表示法,即后缀表达式) By X Wang (LeetCode: 一个在线编...
  • zgljl2012
  • zgljl2012
  • 2014年05月05日 00:59
  • 1066

LeetCode题解:Evaluate Reverse Polish Notation

Evaluate Reverse Polish Notation Evaluate the value of an arithmetic expression in Reverse Poli...
  • MagiSu
  • MagiSu
  • 2013年11月28日 03:43
  • 3120

逆波兰表示法 Reverse Polish notation,RPN

逆波兰记法中,操作符置于操作数的后面。例如表达“三加四”时,写作“3 4 +”,而不是“3 + 4”。如果有多个操作符,操作符置于第二个操作数的后面,所以常规中缀记法的“3 - 4 + 5”在逆波兰记...
  • dpppBR
  • dpppBR
  • 2016年11月28日 21:50
  • 239

[LeetCode]Evaluate Reverse Polish Notation

这道题主要难点是栈的使用。 #include #include #include #include using namespace std; class Solution { publi...
  • easonchenys
  • easonchenys
  • 2014年04月06日 10:26
  • 273

ZOJ - 3829 Known Notation

Do you know reverse Polish notation (RPN)? It is a known notation in the area of mathematics and com...
  • u011345136
  • u011345136
  • 2014年10月12日 21:10
  • 1308
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode之Evaluate Reverse Polish Notation
举报原因:
原因补充:

(最多只允许输入30个字)