根据 逆波兰表示法,求表达式的值。

有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

说明:

整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。

示例 1:

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

解题思路

当遇到运算符时将栈顶两个元素入栈,再将运算的结果入栈

代码

class Solution {public int evalRPN(String[] tokens) {Stack<Integer> stack = new Stack<>();for (int i = 0; i < tokens.length; i++) {if(tokens[i].equals("*"))stack.push(stack.pop()*stack.pop());else if(tokens[i].equals("/")){int pre=stack.pop();stack.push(stack.pop()/pre);}else if(tokens[i].equals("+"))stack.push(stack.pop()+stack.pop());else if(tokens[i].equals("-")){int pre=stack.pop();stack.push(stack.pop()-pre);}else stack.push(Integer.valueOf(tokens[i]));}return stack.peek();}
}

leetcode 150. 逆波兰表达式求值(栈)相关推荐

  1. 【Java】LeetCode 150. 逆波兰表达式求值 (后缀表达式)

    题目: 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话 ...

  2. Leetcode 150. 逆波兰表达式求值 解题思路及C++实现

    解题思路: 使用一个栈来存储待计算的数字,当遇到符号时,则将栈顶的两个元素pop出来,计算得到新的数字,然后再push进栈,大循环内,每循环一次,就访问了容器中的一个string.大循环停止条件:遍历 ...

  3. [leetcode] 150. 逆波兰表达式求值

    class Solution {public:int evalRPN(vector<string>& tokens) {int len = tokens.size();stack& ...

  4. Suzy找到实习了吗Day 11 |栈与队列中途 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

    Day 11 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值 20. 有效的括号 注意栈不是一个数据结构,需要自己用list实现栈的逻辑 class Solu ...

  5. 算法训练Day11|LeetCode 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

    题目链接:20. 有效的括号 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false 第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字 ...

  6. LetCode: 150. 逆波兰表达式求值

    提示 LintCode中的相关算法题实现代码,可以在我的GithHub中下载. 题目需求 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另 ...

  7. 算法训练第十一天|力扣20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

    20. 有效的括号 题目链接:有效的括号 参考:https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B ...

  8. 【Leetcode栈与队列】150. 逆波兰表达式求值(后缀表达式求值,看作对对碰游戏)

    文章目录 Leetcode150 1.问题描述 2.解决方案 3.计算机的思考方式 Leetcode150 1.问题描述 2.解决方案 1.逆波兰表达式优点 2.逆波兰表达式相当于是二叉树中的后序遍历 ...

  9. 【栈】【150. 逆波兰表达式求值】【中等】(需回顾)

    根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说 ...

最新文章

  1. C++读写局域网共享
  2. ajax请求提示html状态码302,快速解决ajax请求出错状态码为0的问题
  3. Spark在Ambari集群环境的使用
  4. Print() 语句以及数字赋值语句 中if-else的使用
  5. 如何调整HOOK的跳转指令
  6. 信号与系统与c语言,2016年安徽医科大学生命科学学院信号系统与C语言程序设计之信号与系统复试笔试仿真模拟题...
  7. linux系统怎么访问u盘文件系统,linux如何挂载U盘和文件系统
  8. 阿里文娱测试实战:机器学习+基于热度链路推荐的引流,让对比测试更精准
  9. Android Studio 导入/导出项目以及Android Device Monitor导出文件
  10. 推荐:用ogr和PIL把矢量数据转化成栅格图像
  11. 买的也忒波折了。。。
  12. 1、学习笔记-谁说rookie不会数分(入门篇)
  13. 目标检测任务超大图像的切图实现
  14. 基于ADS1298的心电图仪
  15. 【C语言:精准打击】scanf_s()函数与scanf()函数的相关解决方案
  16. python读取身份证中的生日信息
  17. 微众银行面试Again
  18. 【附源码】想成为Python爬虫高手,这29个爬虫项目不容错过
  19. 数学不好是原罪——凸优化学习笔记(个人学习记录汇总)
  20. iOS开发常用第三方开源框架

热门文章

  1. shell编程题(三)
  2. Leetcode 124.二叉树中的最大路径
  3. pthread_join函数
  4. 大话数据结构——查找
  5. 关于WKWebView高度的问题的解决
  6. python selenium处理JS只读(12306)
  7. 函数的定义,语法,二维数组,几个练习题
  8. 【CSS 技能提升】 :before和:after的使用
  9. Linux 下 新增Oracle10g 实例
  10. 对美的拥有-读阿兰德波顿《旅行的艺术》(zz)