自学内容网 自学内容网

Leetcode 逆波兰表达式求值

在这里插入图片描述

逆波兰表达式就是后缀表达式。

算法思想,借助栈来实现,当我们遇到操作符时,连续出栈 2 个元素(先出来的是 b,后出来的是 a),这两个元素和操作符进行运算之后的结果压入堆栈。而如果遇到的是数字字符串,那么就利用 Integer.parseInt() 方法将这个字符串转换成数值。最终栈顶元素就是后缀表达式的值。

class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<>();
        for(String token : tokens) {
            if(isOperator(token)) {
                int b = stack.pop();
                int a = stack.pop();
                stack.push(calculate(a, b, token)); 
            } else {
                stack.push(Integer.parseInt(token));// 将字符转换为整数
            }
        }
        
        return stack.pop();        
    }

    private int calculate(int a, int b, String operator) {
        switch(operator) {
            case "+":
                return a + b;
            case "-":
                return a - b;
            case "*":
                return a * b;
            case "/":
                return a / b;
            default:
                throw new IllegalArgumentException("Invalid operator: " + operator);
        }
    }

    private boolean isOperator(String token) {
        return "+-*/".contains(token);
    }
}

原文地址:https://blog.csdn.net/coldasice342/article/details/143866125

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!