zoukankan      html  css  js  c++  java
  • 150. Evaluate Reverse Polish Notation

    一、题目

      1、审题

      2、分析

        给出逆波兰表达式(即运算数写前面,操作符写后边),求出运算的正确结果。

    二、解答

      1、思路:

          采用一个 Stack 存储操作数,当碰到运算符时,出栈栈顶的两个元素进行运算即可。最终遍历完数组后, Stack 中存在的唯一一个数即为结果。

        public int evalRPN(String[] tokens) {
            int len = tokens.length;
            if(len == 0)
                return 0;
            
            Set<String> operSet = new HashSet<>(Arrays.asList("+", "-", "*", "/"));
            
            Stack<Integer> stack = new Stack<>();
            int result = 0;
            for (int i = 0; i < len; i++) {
                
                if(operSet.contains(tokens[i])) {
                    int num1 = stack.pop();
                    int num2 = stack.pop();
                    if(tokens[i].equals("+"))
                        result = num2 + num1;
                    else if(tokens[i].equals("-"))
                        result = num2 - num1;
                    else if(tokens[i].equals("*"))
                        result = num2 * num1;
                    else
                        result = num2 / num1;
                    stack.add(result);
                }
                else {
                    stack.add(Integer.valueOf(tokens[i]));
                }
            }
            return stack.pop();
        }
  • 相关阅读:
    10.17T1 联通块
    10.16复习 数位DP——不要62
    10.16T6 逆序对变式
    10.16T5 最小环+拆点最短路
    10.16T4 GCD递归
    10.16T2 平方差
    10.16T3 乱搞+最优性剪枝
    10.16T1 二分+单调队列优化DP
    10.15T3 树形DP
    10.15T2 生成树+非树边暴力
  • 原文地址:https://www.cnblogs.com/skillking/p/9780702.html
Copyright © 2011-2022 走看看