当前位置:网站首页>leetcode刷题:栈与队列05(逆波兰表达式求值)
leetcode刷题:栈与队列05(逆波兰表达式求值)
2022-07-01 19:16:00 【涛涛英语学不进去】
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
栈操作:遇到数字就入栈,先出栈的是加数、减数、除数、乘数;后出栈的是被加数、被减数、被除数、被乘数。
遇到数字则入栈、遇到运算符则取出栈顶两个数字进行计算,再将结果压入栈中。
package com.programmercarl.stacks_queues;
import java.util.Stack;
/** * @ClassName EvalRPN * @Descriotion TODO * @Author nitaotao * @Date 2022/6/30 13:26 * @Version 1.0 **/
public class EvalRPN {
public int evalRPN(String[] tokens) {
Stack stack = new Stack();
for (int i = 0; i < tokens.length; i++) {
switch (tokens[i]) {
case "+":
//加数
Integer num1 = Integer.valueOf((String) stack.pop());
//被加数
Integer num2 = Integer.valueOf((String) stack.pop());
stack.push(String.valueOf(num2 + num1));
break;
case "-":
//减数
Integer num3 = Integer.valueOf((String) stack.pop());
//被减数
Integer num4 = Integer.valueOf((String) stack.pop());
stack.push(String.valueOf(num4 - num3));
break;
case "*":
//乘数
Integer num5 = Integer.valueOf((String) stack.pop());
//被乘数
Integer num6 = Integer.valueOf((String) stack.pop());
stack.push(String.valueOf(num6 * num5));
break;
case "/":
//除数
Integer num7 = Integer.valueOf((String) stack.pop());
//被除数
Integer num8 = Integer.valueOf((String) stack.pop());
stack.push(String.valueOf(num8 / num7));
break;
default:
stack.push(tokens[i]);
}
}
return Integer.valueOf((String) stack.pop());
}
}

一遍AC,舒服。!
边栏推荐
- Problems encountered in installing MySQL in docker Ubuntu container
- 300题线性代数 第四讲 线性方程组
- Realize pyramids through JS (asterisk pyramid, palindrome symmetric digital pyramid)
- #yyds干货盘点#SQL聚合查询方法总结
- Simple but modern server dashboard dashdot
- tensorflow 张量做卷积,输入量与卷积核维度的理解
- RichView RichEdit SRichViewEdit PageSize 页面设置与同步
- 编译原理复习笔记
- Vulnerability recurrence - Net ueeditor upload
- Win11怎么关闭开机自启动软件
猜你喜欢

Customize the insertion of page labels and realize the initial search of similar address books

关联线探究,如何连接流程图的两个节点

Getting started with fastdfs

2022熔化焊接与热切割上岗证题目模拟考试平台操作

深度学习 常见的损失函数

柒微自动发卡系统源码

Simple but modern server dashboard dashdot

Flask 常用组件

天气预报小程序源码 天气类微信小程序源码

Learn white box test case design from simple to deep
随机推荐
【蓝桥杯Web】2022年第十三届蓝桥杯Web大学组国赛真题解析
Detailed explanation and code example of affinity propagation clustering calculation formula based on graph
switch 有四样写法你知道么
internship:逐渐迈向项目开发
Arduino stepper library drive 28byj-48 stepper motor test program
小鸟逃票登机,如何反思,应如何解决,飞机为何怕小鸟?
深度学习 神经网络基础
There are four ways to write switch, you know
EURA欧瑞E1000系列变频器使用PID实现恒压供水功能的相关参数设置及接线
目標檢測——Yolo系列
Détection des cibles - série Yolo
Realize pyramids through JS (asterisk pyramid, palindrome symmetric digital pyramid)
寫博客文檔
Test of NSI script
Oracle 死锁测试
2022年高处安装、维护、拆除考题模拟考试平台操作
Swiftui 4 new features complete toggle and mixed toggle multiple binding components
Use Zadig to build a continuous delivery platform from 0 to 1
Richview RichEdit srichviewedit PageSize page setup and synchronization
RichView RichEdit SRichViewEdit PageSize 页面设置与同步