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

2025年- G33-Lc107-150. 评估逆波兰表示法--java版

1.题目描述

在这里插入图片描述
在这里插入图片描述

2.思路

在这里插入图片描述
(1)遇到数字,将数字压入栈中,遵循先进后出得策略
(2)遇到运算符,先从栈顶弹出两个元素,进行计算,把结果压入栈中
例子1:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.代码实现

class Solution {
    public int evalRPN(String[] tokens) {

        Stack<Integer> s=new Stack<>();

        for(String token:tokens)
        {  //tokens是字符串,有运算符也有数字
            if(isOperator(token))
            {
                int b=s.pop();               //出栈顺序b,a
                int a=s.pop();
                s.push(applyOperator(a,b,token));                             //b,a做运算之后,把结果压入栈中,参数的顺序和构造方法一样
            }
            else
            {
              s.push(Integer.parseInt(token));//如果token不是运算符,也就是操作数,直接压入栈中
            }
        }
        return s.pop();//栈中最终只会剩下一个元素,这就是计算结果
        //return s.peek();//可以查看最后返回的栈顶元素
    }
        
    
    private boolean isOperator(String token)
    {
        return token.equals("+")||token.equals("-")||token.equals("*")||token.equals("/");
        //return "+-*/".contains(token);
    }
    private int applyOperator(int a, int b, String op)//入栈顺序a,b
    {
        switch(op){
        case"+": return a+b;
        case"-":return a-b;
        case"*":return a*b;
        case"/":return a/b;
        default:throw new IllegalArgumentException("无效的运算符: " +op);
        }
    }
    
}
http://www.dtcms.com/a/105631.html

相关文章:

  • 电脑办公之文件(夹)操作
  • CentOS-查询实时报错日志-查询前1天业务报错gz压缩日志
  • 当AI开始“思考“:揭秘大语言模型的文字认知三部曲题
  • 使用RKNN进行yolo11-cls部署
  • Java的Stream流
  • 大量意图识别方案
  • 目标跟踪综合知识
  • 前端抽象化,打破框架枷锁:Http请求也许该一样
  • 数字化转型国家标准- GB/T 45341-2025《数字化转型管理 参考架构》
  • ThreadLocal 深度解析
  • 解决Certificate verification failed错误
  • linux--0.Linux的特点
  • 群体智能优化算法-变色龙优化算法(Chameleon Swarm Algorithm, CSA,含Matlab源代码)
  • cJSON 处理 JSON(轻量级 C 语言库)(二)
  • 蓝桥杯备赛:动态规划入门
  • 架构设计基础系列:面向对象设计的原则
  • 【Spring Boot 与 Spring Cloud 深度 Mape 之三】服务注册与发现:Nacos 核心实战与原理浅析
  • 【Easylive】服务端操作 Cookie 的完整流程(结合案例解析)
  • APIPost接口测试完整流程指南
  • java学习笔记11——泛型
  • 【Unity】 HTFramework框架(六十四)SaveDataRuntime运行时保存组件参数、预制体
  • Python WebSockets 库详解:从基础到实战
  • MySQL 5.7 Online DDL 技术深度解析
  • C++和C#接口对应关系
  • 【运维】Centos硬盘满导致开机时处于加载状态无法开机解决办法
  • Docker基础详解
  • Linux 高级路由策略控制配置:两个不同路由子网间通信
  • 沉浸式体验测评|AI Ville:我在Web3小镇“生活”了一周
  • 基于MODIS观测的全球格点数据处理与GeoTIFF栅格化存储
  • 新闻发布管理系统带万字文档新闻管理系统java项目java课程设计java毕业设计