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

LeetCode:150. 逆波兰表达式求值

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录

LeetCode:150. 逆波兰表达式求值
给你一个字符串数组 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

方便人来看的是中缀表达式,放假机器看到是后缀表达式,也就是逆波兰表达式,这种表达式不需要括号,只需要按序执行即可
读到符号就从栈中弹出数字进行对应的运算,否则就入栈,注意从栈中弹数字进行运算时都是nums2_nums1

	public int evalRPN(String[] tokens) {Stack<Integer> stack = new Stack<>();for(String str : tokens){if("+".equals(str)){Integer num1 = stack.pop();Integer num2 = stack.pop();stack.push(num2 + num1);}else if("-".equals(str)){Integer num1 = stack.pop();Integer num2 = stack.pop();stack.push(num2 - num1);}else if("*".equals(str)){Integer num1 = stack.pop();Integer num2 = stack.pop();stack.push(num2 * num1);}else if("/".equals(str)){Integer num1 = stack.pop();Integer num2 = stack.pop();stack.push(num2 / num1);}else{stack.push(Integer.valueOf(str));}}return stack.pop();}
http://www.lryc.cn/news/503659.html

相关文章:

  • python中向量指的是什么意思
  • 7.Vue------$refs与$el详解 ------vue知识积累
  • 一个很好的直接网站操作的回测框架
  • 【电子元器件】贴片电阻的故障现象、故障原理和解决方法
  • 基于Spring Boot + Vue的摄影师分享交流社区的设计与实现
  • SpringBoot项目监听端口接受数据(Netty版)
  • 超标量处理器设计笔记(9) 重命名映射表、超标量处理器重命名中相关性问题
  • 如何使用 Python 写入文本文件 ?
  • 07篇(附)--仿射变换矩阵
  • KubeSphere搭建单节点RocketMQ
  • 深度学习中损失函数(loss function)介绍
  • Vue3+Node中使用webrtc推流至mediamtx
  • React 内置的Hook学习
  • Flutter Navigator2.0的原理和Web端实践
  • 初次使用uniapp编译到微信小程序编辑器页面空白,真机预览有内容
  • 【HF设计模式】03-装饰者模式
  • 【人工智能-中级】模型部署与优化:从本地实验到云端与边缘部署
  • Jenkins 编写Pipeline 简介及使用初识详解
  • uboot移植网络驱动过程,无法ping通mx6ull和ubuntu问题解决方案
  • 精准预测美国失业率和贫困率,谷歌人口动态基础模型PDFM已开源,可增强现有地理空间模型
  • C#速成(文件读、写操作)
  • SQL server学习03-创建和管理数据表
  • 【UE5 “RuntimeLoadFbx”插件】运行时加载FBX模型
  • 【潜意识Java】深入理解 Java 面向对象编程(OOP)
  • windows同时使用多个网卡
  • Spark执行计划解析后是如何触发执行的?
  • B4X编程语言:B4X控件方法汇总
  • 基于XML配置Bean和基于XML自动装配
  • 全排列 dfs
  • linux内存相关命令的尝试