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

JAVA练习99-逆波兰表达式求值

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、题目-逆波兰表达式求值

1.题目描述

2.思路与代码

2.1 思路

2.2 代码

总结


前言

提示:这里可以添加本文要记录的大概内容:

4月5日练习内容


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目-逆波兰表达式求值

1.题目描述

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

注意:

有效的算符为 '+'、'-'、'*' 和 '/' 。
每个操作数(运算对象)都可以是一个整数或者另一个表达式。
两个整数之间的除法总是 向零截断 。
表达式中不含除零运算。
输入是一个根据逆波兰表示法表示的算术表达式。
答案及所有中间计算结果可以用 32 位 整数表示。
示例 1:

输入:tokens = ["2","1","+","3","*"]
输出:9
解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9

示例 2:

输入:tokens = ["4","13","5","/","+"]
输出:6
解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6

示例 3:

输入:tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]
输出:22
解释:该算式转化为常见的中缀算术表达式为:
  ((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/evaluate-reverse-polish-notation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2.思路与代码

2.1 思路

1.本题使用栈来解决

2.遍历字符数组,如果遇到运算符则将元素出栈进行运算,并将结果重新入栈

3.如果不是运算符,则将其入栈

4.遍历完字符串,将最终结果出栈并输出

2.2 代码

代码如下(示例):

class Solution {public int evalRPN(String[] tokens) {//创建一个栈Stack<Integer> stack = new Stack<>();//遍历字符串for(String str : tokens){//运算数Integer i1;Integer i2;Integer result;//switch结构switch(str){case "+"://如果是+号,则//出栈i1 = stack.pop();i2 = stack.pop();//计算结果result = i1 + i2;//将结果入栈stack.push(result);break;case "-"://如果是-号,则//出栈i1 = stack.pop();i2 = stack.pop();//计算结果result = i2 - i1;//将结果入栈stack.push(result);break;case "*"://如果是*号,则//出栈i1 = stack.pop();i2 = stack.pop();//计算结果result = i1 * i2;//将结果入栈stack.push(result);break;case "/"://如果是/号,则//出栈i1 = stack.pop();i2 = stack.pop();//计算结果result = i2 / i1;//将结果入栈stack.push(result);break;default://不是运算符则入栈stack.push(Integer.parseInt(str));}}//将最后结果出栈Integer result = stack.pop();return result;}
}


总结

提示:这里对文章进行总结:
 

http://www.lryc.cn/news/45728.html

相关文章:

  • 恶意软件、恶意软件反杀技术以及反病毒技术的详细介绍
  • 【数据库运维】mysql备份恢复练习
  • 刷题30-对称的二叉树
  • 精选简历模板
  • 蓝桥杯嵌入式第十三届客观题解析
  • 【Redis】线程问题
  • 【算法题】2498. 青蛙过河 II
  • 【新2023Q2押题JAVA】华为OD机试 - 整理扑克牌
  • 【hello C语言】文件操作
  • OBCP第八章 OB运维、监控与异常处理-数据库监控
  • 已经提了离职,还有一周就走,公司突然把我移出企业微信,没法考勤打卡, 还要继续上班吗?...
  • Win11启用IE方法
  • 有人靠ChatGPT 狂赚200W !有人到现在,连账号都没开通......
  • 基于GD32F470的mbedtls 3DES算法测试
  • 为什么一些人很瞧不起 Java?
  • DropMAE: Masked Autoencoders with Spatial-Attention Dropout for Tracking Tasks
  • 【shell 基础(11)循环之for】带列表:空格子串、换行子串、展开、命令替换、seq;不带列表:接受参数、类C
  • 虚拟环境中创建Django项目 详细完整
  • BCSP-玄子JAVA开发之JAVA数据库编程CH-08_JDBC
  • 一位程序员将一款开源工具变成了价值75亿美元的帝国
  • tmux | 终端操作软件,解决深度学习中终端相关问题
  • 信号 捕捉
  • sqlserver中判断是否存在的方法
  • 基于Kettle跑批的案例说明
  • 2023 最新版网络安全保姆级自学指南
  • Chapter9.3:线性系统稳定性分析及综合实例
  • EXCEL 在复杂查询时摒弃vlookup() sumif() 等公式,而使用数据透视表的初步学习
  • C 文件读写
  • Linux中实现程序开机自启——将程序配置为系统服务
  • 【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(13)