leetcode之逆波兰表达式
题目介绍
根据逆波兰表示法,求表达式的值。
有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
说明:
- 整数除法只保留整数部分。
- 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 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
题目分析
逆波兰表达式,右边一个运算符,左边会对应两个数字,这正好可以利用栈的性质,通过vector数组,依次把前面的两个数字和后面操作符进行读取并运算,运算过程中栈对前面两个数字进行pop操作,对运算结果进行push操作,最后栈的top元素即是要计算的最终值。
源代码
class Solution
{
public:int evalRPN(vector<string>& tokens) {stack<int> s_num;int num1,num2;for(auto token:tokens){if(token=="+"||token=="-"||token=="*"||token=="/"){num2 = s_num.top();s_num.pop();num1 = s_num.top();s_num.pop();char c = token[0];switch(c){case '+':s_num.push(num1+num2);break;case '-':s_num.push(num1-num2);break;case '*':s_num.push(num1*num2);break;case '/':s_num.push(num1/num2);break;}}else{s_num.push(atoi(token.c_str()));} }return s_num.top();}
};
leetcode之逆波兰表达式相关推荐
- 【Java】LeetCode 150. 逆波兰表达式求值 (后缀表达式)
题目: 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话 ...
- leetcode 150. 逆波兰表达式求值(栈)
根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说,表达 ...
- Leetcode 150. 逆波兰表达式求值 解题思路及C++实现
解题思路: 使用一个栈来存储待计算的数字,当遇到符号时,则将栈顶的两个元素pop出来,计算得到新的数字,然后再push进栈,大循环内,每循环一次,就访问了容器中的一个string.大循环停止条件:遍历 ...
- [leetcode] 150. 逆波兰表达式求值
class Solution {public:int evalRPN(vector<string>& tokens) {int len = tokens.size();stack& ...
- 代码随想录第11天 | LeetCode20. 有效的括号、LeetCode1047. 删除字符串中的所有相邻重复项、LeetCode150. 逆波兰表达式求值
day11 | LeetCode20. 有效的括号.LeetCode1047. 删除字符串中的所有相邻重复项.LeetCode150. 逆波兰表达式求值 文章目录 day11 | LeetCode20 ...
- JavaScript逆波兰表达式求值
逆波兰表达式简介 逆波兰表达式又叫做后缀表达式.逆波兰表示法是波兰逻辑学家J・卢卡西维兹(J・ Lukasiewicz)于1929年首先提出的一种表达式的表示方法 .后来,人们就把用这种表示法写出的表 ...
- LeetCode实战:逆波兰表达式求值
题目英文 Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are ...
- 逆波兰表达式求值(leetcode 150)
文章目录 1.问题描述 2.难度等级 3.热门指数 4.解题思路 5.实现示例 5.1 C++ 5.2 Golang 参考文献 1.问题描述 逆波兰表达式也叫后缀表达式. 有效的算符包括 +.-.*. ...
- 算法训练Day11|LeetCode 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
题目链接:20. 有效的括号 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false 第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字 ...
- 【Leetcode栈与队列】150. 逆波兰表达式求值(后缀表达式求值,看作对对碰游戏)
文章目录 Leetcode150 1.问题描述 2.解决方案 3.计算机的思考方式 Leetcode150 1.问题描述 2.解决方案 1.逆波兰表达式优点 2.逆波兰表达式相当于是二叉树中的后序遍历 ...
最新文章
- 【转】python中的字符数字之间的转换函数
- 分布式事物-2pc和3pc区别
- linux iptables规则组成及用法
- python初学者之网络爬虫_Python初学者之网络爬虫(二)
- 【数据分析】离婚率逐年上升,数据分析告诉你背后的主因竟然是它!
- Java中的ThreadPoolExecutor类
- [剑指offer]面试题第[60]题[JAVA][n个骰子的点数][动态规划][空间优化]
- Java学习--泛型
- #10 Linux硬盘管理
- Bootstrap滚动监控器
- OpenCV精进之路(八):图像轮廓和图像分割修复——轮廓查询和多边形包围轮廓
- mac本常用快捷键大全
- 定义结构体变量的三种方法
- 谷歌admob测试设备测试流程
- 30天自制操作系统 学习笔记1
- 前端优质网络内容(引用)
- C++制作加密聊天程序:这样设置一下,再也不用担心女朋友翻你手机了!
- 转发:神了,Fly_by结构原来就这么回事儿!
- ## 用python 80行代码实现一个微信消息撤回捕捉功能
- 未检测到与wia兼容的设备_扫描仪API接入大全:Twain, WIA 或 两者不具有.[换个思路 春暖花开]...
热门文章
- Codeforces525E Anya and Cubes(双向搜索)
- C# .NET开发图形图像程序时提示“GDI+ 中发生一般性错误“
- 【已解决】Maven更改本地默认仓库时遇到的问题。 No implementation for org.apache.maven.model.path.PathTranslator was bound
- iframe页面使用Js实现父页面和子页面通信
- 理解Java - AQS
- Spring之切入点表达式
- ipad连接电脑显示不在充电_笔记本电脑和投影仪连接后为什么投影仪不能显示电脑内容?...
- 如何复制网上的收费文本
- ubuntu自定义安装里怎么选_安装地暖时,地板要怎么选?
- linux怎么重载mysql配置命令_在Linux系统中启动/停止/重新启动/启用/重新加载MySQL和MariaDB服务...