LeetCode:逆波兰表达式求值【150】
2024-08-22 20:13:17
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();
}
}
最新文章
- redmine问题集锦
- [poi2007] biu
- [No000018]都在背单词,为啥学霸那么厉害-如何在一天内记200个单词?
- 事务四大特征:原子性,一致性,隔离性和持久性(ACID)
- bzoj4109: [Wf2015]Cutting Cheese
- IIS 配置
- C语言中fgetc、fputc和getc、putc的区别是什么
- sql删除wordpress没用的postmeta记录
- HW3.5
- JAVA 内存泄露的理解
- 201521123075 《Java程序设计》第2周学习总结
- 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据
- Java开发笔记(十七)各得其所的多路分支
- centos7安装notepadqq
- linux中ping带时间及打印内容到文件
- 二叉查找树及B-树、B+树、B*树变体
- Android 判断是否有声音在播放
- luogu4269 Snow Boots G (并查集)
- C#多线程编程系列(三)- 线程同步
- Python fabs() 函数
热门文章
- EasyUI获取DataGrid中某一列的所有值
- Could not load type ‘System.ServiceModel.Activation.HttpModule’ from&;
- python笔记6:常用模块
- 一个stream!=NULL 的问题 fclose.c 47
- SourceTree --转载 SourceTree大文件上传提示POST git-receive-pack (chunked)相关问题记录
- 对IOS设备中UDID的一些思考
- Segmented 标签栏 切换效果
- NHibernate 1.0 Released 版本发布了
- Hbase的shell命令学习
- shell学习之路(整理ing)