🌗 150. 逆波兰表达式求值

吞佛童子2022年6月20日
  • algorithm
  • queue
  • stack
小于 1 分钟

🌗 150. 逆波兰表达式求值

难度: 🌗

问题描述

img_10.png


解法

class Solution {
    public int evalRPN(String[] tokens) {
        // 思路:
        // 借助 栈
        LinkedList<Integer> stack = new LinkedList<>();
        HashSet<String> set = new HashSet<>();
        set.add("+");
        set.add("-");
        set.add("*");
        set.add("/");
        for(String str : tokens) {
            if(set.contains(str)) {
                // 这是一个运算符,需要进行计算
                int b = stack.pop();
                int a = stack.pop();
                int res = 0;
                if(str.equals("+")) {
                    res = a + b;
                } else if(str.equals("-")) {
                    res = a - b;
                } else if(str.equals("*")) {
                    res = a * b;
                } else {
                    res = a / b;
                }
                stack.push(res);
            } else {
                // 这是一个数值
                int cur = Integer.valueOf(str);
                stack.push(cur);
            }
        }
        return stack.peek();
    }
}

输出

img_9.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou