当前位置: 首页 > article >正文

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);
    }
}

http://www.kler.cn/a/400508.html

相关文章:

  • Redis与数据库关联小记
  • 连续 Hopfield 神经网络深入探讨
  • Git学习教程(更新中)
  • sqlite3相关经验记录
  • 微信小程序上传pdf和显示
  • 使用python编写工具:快速生成chrome插件相关文件结构
  • iOS逆向入门:使用theos注入第三方依赖库
  • KUKU FM 音频Linux平台免费下载工具
  • 防火墙----iptables
  • 鸿蒙next版开发:拍照实现方案(ArkTS)
  • llm 从0开始学习大语言模型, transformer架构学习
  • Rust “xxx“.to_string()和Rust String::from(“xxx“)区别(将字符串字面量(str类型)转换为String类型)
  • 数学建模——模型假设环节介绍
  • 基于单片机的手持金属探测仪设计
  • UE5入门教程:蓝图变量
  • 表格的选择弹窗,选中后返显到表格中
  • 在应用启动时,使用 UniApp 提供的 API 检查和请求权限。
  • 避免误差!Android 中正确计算时间差的方式
  • 网页web无插件播放器EasyPlayer.js H.265流媒体播放器的decoder.js报Unexpected token ‘<‘错误
  • 大麦抢票科技