当前位置:网站首页>力扣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();
}
}边栏推荐
猜你喜欢

Redis persistence mechanism

Major upgrade of MSE Governance Center - Traffic Governance, Database Governance, Same AZ Priority

QoS Quality of Service Six Router Congestion Management

罗克韦尔Rockwell Automation EDI 项目

多种深度模型实现手写字母MNIST的识别(CNN,RNN,DNN,逻辑回归,CRNN,LSTM/Bi-LSTM,GRU/Bi-GRU)

【LeetCode】42、接雨水

入门:人脸专集2 | 人脸关键点检测汇总(文末有相关文章链接)

【初学必备】3d游戏建模入门基础知识

Redis command---key chapter (super complete)

瑞吉外卖学习笔记4
随机推荐
Keras deep learning combat (17) - image segmentation using U-Net architecture
服务器上行带宽和下行带宽指的是什么
Redis命令---key篇 (超全)
Modern Privacy-Preserving Record Linkage Techniques: An Overview论文总结
新建离线同步节点时选择数据去向-表时报错,数据库类型是adb pg,怎么办?
MySQL 查询出重复出现两次以上的数据 - having
set和map使用讲解
搭建自己的以图搜图系统 (一):10 行代码搞定以图搜图
Major upgrade of MSE Governance Center - Traffic Governance, Database Governance, Same AZ Priority
MSE 治理中心重磅升级-流量治理、数据库治理、同 AZ 优先
漫谈测试成长之探索——测试文档
开源一夏 | mysql5.7 安装部署 -二进制安装
servlet映射路径匹配解析
常见端口及服务
网站架构探测&chrome插件用于信息收集
MSE 治理中心重磅升级-流量治理、数据库治理、同 AZ 优先
LeetCode·27.移除元素·双指针
工业基础类—利用xBIM提取IFC几何数据
2022-08-09 Study Notes day32-IO Stream
Rider调试ASP.NET Core时报thread not gc-safe的解决方法