150.逆波兰表达式求值

根据 逆波兰表示法,求表达式的值。
有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
注意两个整数之间的除法只保留整数部分。
可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
解题思路 :二叉树后序遍历+栈操作,碰见数据往里入栈,碰见操作符就弹出两个数据出栈,结果再进栈。
ps:
二叉树前序遍历(根左右)
二叉树中序遍历(左根右)
二叉树后序遍历(左右根)

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

valueOf()函数用于返回指定对象的原始值。
stack.peek()返回栈顶元素,但不删除栈中元素。
stack.pop()返回栈顶元素,删除栈中元素。

class Solution {public int evalRPN(String[] tokens) {Stack<String> stack=new Stack<>();for(int i=0;i<tokens.length;i++){if(tokens[i].equals("+") ||tokens[i].equals("-")||tokens[i].equals("*") ||tokens[i].equals("/")){String temp1=stack.peek();stack.pop();String temp2=stack.peek();stack.pop();String result=String.valueOf(caculate12(tokens[i],temp1,temp2));stack.push(result);}else{stack.push(tokens[i]);}}return Integer.valueOf(stack.peek());}public static int caculate12(String s,String a,String b){int ans=0;switch (s){case "+":ans=Integer.valueOf(b)+Integer.valueOf(a);break;case "-":ans=Integer.valueOf(b)-Integer.valueOf(a);break;case "*":ans=Integer.valueOf(b)*Integer.valueOf(a);break;case "/":ans=Integer.valueOf(b)/Integer.valueOf(a);break;}return ans;}
}

栈与队列(逆波兰式)相关推荐

  1. 数据结构——逆波兰式

    很久没有关注算法和数据结构,大部分知识都已经忘记了:是时间好好回炉一下了,说实话干读数据机构这本书还是挺枯燥而且这本书原理性比较多,有一定的难度.这不刚看到逆波兰式废了好大劲才搞懂,老了... 逆波兰 ...

  2. 【C语言】算法学习·逆波兰式

    目录 逆波兰式 算法定义 算法作用 算法实现 计算方法 算法举例 算法图示 程序实现 二叉树法 逆波兰式 算法定义 一个表达式E的后缀形式可以如下定义: (1)如果E是一个变量或常量,则E的后缀式是E ...

  3. 对逆波兰式的简单理解

    前言: 人是比较喜欢中缀式的,因为它符合人们的运算习惯:但是机器是不喜欢中缀式,它更喜欢后缀式,也就是逆波兰式. 逆波兰式的理解: 1.逆波兰式: ab35c-*+= 2.计算机计算过程: 策略:计算 ...

  4. C语言编程对一个逆波兰式进行求值,算式与逆波兰式

    致憨憨的从前 当年,老师布置一道作业:编写一个计算器,要求输入算式,给出结果.算式中只包含+-*/^这几个运算符,算式中不含负数.由于是Python课程,我很快给出了解题方式,如下: while Tr ...

  5. 使用栈解决的一类经典问题:表达式转换及求值;中缀表达式;前缀表达式,后缀表达式,中缀转前缀;中缀转后缀;后缀表达式求值;波兰式,逆波兰式

    文章目录 背景知识 表达式转换问题(考研经典) 一:手工转换 (1)中缀转前缀和中缀转后缀 (2)前缀转中缀和后缀转中缀 二:用栈实现表达式转换 (1)中缀转后缀 (2)中缀转前缀 表达式计算问题(使 ...

  6. DS栈—波兰式,逆波兰式

    题目描述 表达式有三种表示方法,分别为: 前缀表示(波兰式):运算符+操作数1+操作数2 中缀表示:操作数1+运算符+操作数2 后缀表示(逆波兰式):操作数1+操作数2+运算符 例如:a +b * ( ...

  7. 【C++】栈的应用:逆波兰式的实现

    逆波兰表达式 一.定义 二.逆波兰式的意义 三.逆波兰式的实现 1.方法 (1)中缀表达式转化为后缀表达式 (2)由后缀表达式计算结果 2.代码实现 一.定义 逆波兰式,又称后缀表达式,指的是操作符在 ...

  8. 栈的应用 - 波兰式与逆波兰式

       上一篇笔记中,简单讲到了栈的特性,并且给出了栈的实现,现在要利用栈来实现表达式的求值问题.    有三个名词与表达式的计算密切相关,分别是中缀表达式.前缀表达式和后缀表达式,它们都是表达式的一种 ...

  9. 线性数据结构的实现与应用_双端队列_逆波兰式_呼叫中心_XAUAT_(原问题自杜克大学Duke University cps110 C++ Stacks and Queues and Lists)

    求收藏求转发! 附实验报告链接: https://blog.csdn.net/weixin_43781565/article/details/106507340 提供DOC资源  https://do ...

  10. D. DS栈—波兰式,逆波兰式(dsoj c++)

    题目描述 表达式有三种表示方法,分别为: 前缀表示(波兰式):运算符+操作数1+操作数2 中缀表示:操作数1+运算符+操作数2 后缀表示(逆波兰式):操作数1+操作数2+运算符 例如:a +b * ( ...

最新文章

  1. Python的命名空间和作用域
  2. 20210808 滑模中常见趋近率
  3. 排列组合(HDU-1521)
  4. 瞎说一波3种基本背包问题【希望巨巨们指出错误】
  5. 为什么中台是传统企业数字化转型的关键?
  6. 远程调试Hadoop
  7. 数据结构中的头结点和头指针
  8. 档案盒正面标签制作_如何制作差异化的短视频内容?
  9. GMapping原理分析
  10. c语言贪吃蛇程序设计报告蚂蚁文库,贪吃蛇游戏C程序设计报告
  11. 优秀关卡设计的十个原则
  12. Mysql—— 内连接、左连接、右连接以及全连接查询
  13. C措辞教程第二章: 数据范例、运算符、表达式(4)
  14. python输出字体的大小_Python之美——一只数据狗的笔记[长期更新]
  15. 凸包 Codeforces605C Freelancer's Dreams
  16. 课程设计 齿轮油泵泵体的机械加工工艺规程及工艺夹具装备设计
  17. 从大厂离职后,AI 大神们选择加入 AI 初创公司
  18. 如何在element-plus配套vue3中使用日期时间选择器默认英文修改为中文
  19. MapX研究——MapX核心技术剖析(五)
  20. 计算机培训普通话是什么,普通话培训(计算机辅助普通话测试介绍).ppt

热门文章

  1. Linux应急响应之挖矿篇
  2. XXE外部实体注入漏洞总结
  3. dlum1085-打表
  4. 金融统计分析python论文_金融统计分析论文
  5. java获取长度_获取java长度
  6. opencv3中的glob函数读取文件夹中数据
  7. 自相关与互相关的理解与物理意义
  8. 改善C++ 程序的150个建议学习之建议8:拒绝晦涩难懂的函数指针
  9. Access to XMLHttpRequest at ‘file:///D:/xx/xxx.json‘ from origin ‘null‘ has been blocked by CORS问题解决
  10. 递归:由浅入深,深入了解递归