zoukankan      html  css  js  c++  java
  • [LeetCode系列]Evaluate Reverse Polish Notation

    Evaluate 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



    思考:观察例子,可以发现,操作符的处理优先级是根据数组的前后顺序作为优先级进行处理,所以没有必要对操作符进行入栈操作。
    而对当前的操作符进行计算时,会取栈顶位置的头两个数进行运算,运算完将结果压入栈,此题不难理解,直接上代码:


    代码:
     1 public class Solution {
     2     public int evalRPN(String[] tokens) {
     3         Stack<Integer> stack = new Stack<Integer>();
     4         String operators = "+-*/";
     5         for (String s:tokens) {
     6             if (!operators.contains(s)) {
     7                 int num = Integer.valueOf(s);
     8                 stack.push(num);
     9             } else {
    10                 int a = 0; 
    11                 int b = 0;
    12                 if (!stack.isEmpty()) {
    13                      a = Integer.valueOf(stack.pop());
    14                 }
    15                 if (!stack.isEmpty()) {
    16                      b = Integer.valueOf(stack.pop());
    17                 }
    18                 int index = operators.indexOf(s);
    19                 int c = 0;
    20                 switch (index) {
    21                     case 0:
    22                            c = a + b;
    23                            stack.push(c);
    24                            break;
    25                     case 1:
    26                            c = b - a;
    27                            stack.push(c);
    28                            break;
    29                     case 2:
    30                            c = a * b;
    31                            stack.push(c);
    32                            break;
    33                     case 3:
    34                            c = b / a;
    35                            stack.push(c);
    36                            break;
    37                 }
    38             }
    39         }
    40         int value = stack.pop();
    41         return value;
    42     }
    43 }
  • 相关阅读:
    JAVA回调机制(转)
    单例模式之饿汉懒汉模式
    TOMCAT目录结构
    Hibernate Component的用法
    【转】单例模式完全剖析
    EhCache使用详解
    【转】jar包详解和METAINF作用
    使用 Spring 2.5 注释驱动的 IoC 功能
    vc中,制作在任务栏隐藏图标的mfc程序
    打开网页,打开外部应用程序
  • 原文地址:https://www.cnblogs.com/Jam01/p/3656875.html
Copyright © 2011-2022 走看看