当前位置:网站首页>力扣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();
}
}
边栏推荐
猜你喜欢
MSE 治理中心重磅升级-流量治理、数据库治理、同 AZ 优先
云渲染的应用正在扩大,越来越多的行业需要可视化服务
【自然语言处理】【向量表示】PairSupCon:用于句子表示的成对监督对比学习
Rider调试ASP.NET Core时报thread not gc-safe的解决方法
ARouter使用自定义注解处理器,自动生成跳转Activity的代码,避免手动填写和管理path
Optimization is a habit The starting point is to 'stand close to the critical'
FPGA:生成固化文件(将代码固化到板子上面)
QoS Quality of Service Seven Switch Congestion Management
工业基础类—利用xBIM提取IFC几何数据
QoS服务质量八拥塞避免
随机推荐
CAS:2055042-70-9_N-(叠氮基-PEG4)-生物素
Win11如何清除最近打开过的文件记录?
Consul简介和安装
MySql主要性能指标说明
Consul Introduction and Installation
[教你做小游戏] 斗地主的手牌,如何布局?看25万粉游戏区UP主怎么说
What is the upstream bandwidth and downstream bandwidth of the server?
pytorch使用Dataloader加载自己的数据集train_X和train_Y
主动信息收集
IoU、GIoU、DIoU、CIoU四种损失函数总结
什么是企业知识库?有什么作用?如何搭建?
FPGA:从0开始(安装开发环境)加破解
openssl查看证书信息
shell运算详解,看这一篇就够了!
QoS服务质量七交换机拥塞管理
从企业的视角来看,数据中台到底意味着什么?
Biotin-PEG4-IC(TFP ester/amine/NHS Ester/azide)特性分享
网站架构探测&chrome插件用于信息收集
flask的配置文件
状态压缩dp蒙德里安的梦想