当前位置:网站首页>力扣150-逆波兰表达式求值——栈实现
力扣150-逆波兰表达式求值——栈实现
2022-08-10 19:01:00 【张怼怼√】
题目描述
根据 逆波兰表示法,求表达式的值。
有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
注意 两个整数之间的除法只保留整数部分。
可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
求解思路
还是放一张卡哥的动态图:

- 发现如果遇到 +、-、*、/ 这几个运算符,我们一般是将这个运算符的前面两个数组进行运算,这可以考虑成栈操作,如图所示;
- 代码实现也非常简单,不过需要注意 +、-、*、/ 这些要用双引号,不要用单引号,因为他是与字符串s作比较,并不是字符,我在这个地方出现了一些错误;
- 运算完最后栈中肯定只有一个元素,将它pop或者peek都可以。
输入输出示例

代码
class Solution {
public int evalRPN(String[] tokens) {
Deque<Integer> deque = new LinkedList<>();
for(String s : tokens){
if(s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/")){
int p1 = deque.pop();
int p2 = deque.pop();
if(s.equals("+")) deque.push(p1 + p2);
if(s.equals("-")) deque.push(p2 - p1);
if(s.equals("*")) deque.push(p1 * p2);
if(s.equals("/")) deque.push(p2 / p1);
}else deque.push(Integer.valueOf(s));
}
return deque.pop();
}
}边栏推荐
猜你喜欢

DefaultSelectStrategy NIOEventLoop执行策略

2022-08-09 学习笔记 day32-IO流

主动信息收集

Keras深度学习实战(17)——使用U-Net架构进行图像分割

消息队列初见:一起聊聊引入系统mq 之后的问题

Redis persistence mechanism

Keras deep learning combat (17) - image segmentation using U-Net architecture

『牛客|每日一题』岛屿数量

QoS服务质量八拥塞避免

【Knowledge Sharing】What is SEI in the field of audio and video development?
随机推荐
websocket校验token:使用threadlocal存放和获取当前登录用户
【greenDao】Cannot access ‘org.greenrobot.greendao.AbstractDaoSession‘ which is a supertype of
DefaultSelectStrategy NIOEventLoop执行策略
3D游戏建模学习路线
几行深度学习代码设计包含功能位点的候选免疫原、酶活性位点、蛋白结合蛋白、金属配位蛋白
pip3升级到22.2.2
陕西CAS:1244028-50-9_Biotin-PEG3-SCO-PPh3 固体
Win11连接投影仪没反应怎么解决?
状态压缩dp蒙德里安的梦想
003-序列图(一)
产品思维训练 | 新用户从注册到绑卡流失率很高是什么原因?
【LeetCode】42、接雨水
Interview Question 04.12. Summation Path-dfs+Auxiliary Array Method
请问下在datastream中用flinkcdc怎么设置jdbc的参数useSSL=false呀
LeetCode·26.删除有序数组中的重复项·双指针
CAS:190598-55-1_Biotin sulfo-N-hydroxysuccinimide ester生物素化试
Consul简介和安装
瑞吉外卖学习笔记4
Consul Introduction and Installation
[Teach you how to do mini-games] How to lay out the hands of Dou Dizhu?See what the UP master of the 250,000 fan game area has to say