LeetCode:逆波兰表达式求值【150】

题目描述

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

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

说明:

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

示例 1:

输入: ["2", "1", "+", "3", "*"]
输出: 9
解释: ((2 + 1) * 3) = 9

示例 2:

输入: ["4", "13", "5", "/", "+"]
输出: 6
解释: (4 + (13 / 5)) = 6

示例 3:

输入: ["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

题目分析

  这道题也是对栈的应用,思路是这样的:

  • 如果当前token为数字的话,我们把它压入栈中。
  • 如果当前token为符号的话,我们需要从栈中取出两个数字,然后对他们进行运算操作。
    • 除法运算时,分母为0,直接返回0  

切记:

  取出的第一个数num1,第二个数为num2,对于+或者*操作无所谓,但是对于-或者\操作,一定要看清,是num2-num1和num2/num1。

Java题解

class Solution {
public int evalRPN(String[] tokens) { Stack<Integer> stack = new Stack<>();
for(String token:tokens)
{
if(token.equals("+")||token.equals("-")||token.equals("*")||token.equals("/"))
{
int num1 = stack.pop();
int num2 = stack.pop();
switch (token)
{
case "+":stack.push(num1+num2);break;
case "-":stack.push(num2-num1);break;
case "*":stack.push(num1*num2);break;
case "/":
if(num1==0)
return 0;
stack.push(num2/num1)
;break;
}
continue;
}
stack.push(Integer.valueOf(token));
}
return stack.pop();
}
}

  

最新文章

  1. redmine问题集锦
  2. [poi2007] biu
  3. [No000018]都在背单词,为啥学霸那么厉害-如何在一天内记200个单词?
  4. 事务四大特征:原子性,一致性,隔离性和持久性(ACID)
  5. bzoj4109: [Wf2015]Cutting Cheese
  6. IIS 配置
  7. C语言中fgetc、fputc和getc、putc的区别是什么
  8. sql删除wordpress没用的postmeta记录
  9. HW3.5
  10. JAVA 内存泄露的理解
  11. 201521123075 《Java程序设计》第2周学习总结
  12. 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据
  13. Java开发笔记(十七)各得其所的多路分支
  14. centos7安装notepadqq
  15. linux中ping带时间及打印内容到文件
  16. 二叉查找树及B-树、B+树、B*树变体
  17. Android 判断是否有声音在播放
  18. luogu4269 Snow Boots G (并查集)
  19. C#多线程编程系列(三)- 线程同步
  20. Python fabs() 函数

热门文章

  1. EasyUI获取DataGrid中某一列的所有值
  2. Could not load type ‘System.ServiceModel.Activation.HttpModule’ from&amp;
  3. python笔记6:常用模块
  4. 一个stream!=NULL 的问题 fclose.c 47
  5. SourceTree --转载 SourceTree大文件上传提示POST git-receive-pack (chunked)相关问题记录
  6. 对IOS设备中UDID的一些思考
  7. Segmented 标签栏 切换效果
  8. NHibernate 1.0 Released 版本发布了
  9. Hbase的shell命令学习
  10. shell学习之路(整理ing)