Middle-题目102:150. Evaluate Reverse Polish Notation

原创 2016年05月31日 19:54:37

题目原文:
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, /. Each operand may be an integer or another expression.
题目大意:
计算逆波兰式的值。
题目分析:
在《数据结构》课的堆栈部分,我们学习过如果求逆波兰式的值,在此复习一下:
初始化一个堆栈,然后遍历逆波兰式数组,如果是操作数则入栈,如果是操作符则把两个操作数弹出来进行运算,运算结果压入堆栈,最终栈中只有一个元素,即表达式的值。
源码:(language:java)

public class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<Integer>();
        for(String token : tokens) {
            if(token.equals("+") || token.equals("-") || token.equals("*") || token.equals("/")) {
                int num1 = stack.pop();
                int num2 = stack.pop();
                stack.push(operate(num2,token,num1));
            }
            else
                stack.push(Integer.parseInt(token));
        }
        return stack.peek();
    }
    private int operate(int a, String op, int b) {
        if(op.equals("+"))
            return a+b;
        else if(op.equals("-"))
            return a-b;
        else if(op.equals("*"))
            return a*b;
        else {
            return a/b;
        }
    }

}

成绩:
17ms,beats 39.27%,众数16ms,17.94%
cmershen的碎碎念:
逆波兰式是一种没有括号的,但运算结果唯一的表达式,对计算机来说要比中缀表达式容易理解很多。关于中缀表达式转逆波兰式的算法见百度百科,之前我们的课程设计也做过这个。

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

【LeetCode】Evaluate Reverse Polish Notation 解题报告

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

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

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

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
  • 2718

【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
  • 2341

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
  • 2473

LeetCode–Evaluate Reverse Polish Notation

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

Evaluate Reverse Polish Notation -- LeetCode

原题链接: http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/  这道题是逆波兰式的求解,不了解逆波兰式的朋友可以参考一...
  • linhuanmars
  • linhuanmars
  • 2014年03月13日 21:56
  • 5403

150. Evaluate Reverse Polish Notation

Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -...
  • wusecaiyun
  • wusecaiyun
  • 2015年08月23日 19:34
  • 179

150. Evaluate Reverse Polish Notation**

Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -...
  • alwaystry
  • alwaystry
  • 2016年12月18日 22:55
  • 113

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
  • 3117
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Middle-题目102:150. Evaluate Reverse Polish Notation
举报原因:
原因补充:

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