当前位置:网站首页>力扣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执行策略
- 7-2 乒乓人训练大师(双指针)
- [Teach you how to make a small game] Write a function with only a few lines of native JS to play sound effects, play BGM, and switch BGM
- 端口探测详解
- 弘玑Cyclone与风变科技达成战略合作:优势互补聚焦数字化人才培养
- 让mixin为项目开发助力【及递归优化新尝试】
- Optimization is a habit The starting point is to 'stand close to the critical'
猜你喜欢
随机推荐
shell运算详解,看这一篇就够了!
瑞吉外卖学习笔记4
openssl查看证书信息
今日份bug,点击win10任务栏视窗动态壁纸消失的bug,暂未发现解决方法。
主动信息收集
基于TCP的聊天系统
flask装饰器版登录、session
第四届“传智杯”全国大学生IT技能大赛(初赛A组) 补题
QoS服务质量八拥塞避免
When selecting a data destination when creating an offline synchronization node - an error is reported in the table, the database type is adb pg, what should I do?
子域名收集&Google搜索引擎语法
FPGA工程师面试试题集锦61~70
Keras deep learning combat (17) - image segmentation using U-Net architecture
杭电多校七 1003-Counting Stickmen(组合数学)
漫谈测试成长之探索——测试文档
多种深度模型实现手写字母MNIST的识别(CNN,RNN,DNN,逻辑回归,CRNN,LSTM/Bi-LSTM,GRU/Bi-GRU)
服务器上行带宽和下行带宽指的是什么
servlet映射路径匹配解析
优化是一种习惯●出发点是'站在靠近临界'的地方
NPDP|传统行业产品经理如何进行能力提升?








