力扣150-逆波兰表达式求值(C++,附思路)
思路:
这题都把用栈直说出来了,用啊,为什么不用!其实之前学习数据结构的时候应该也已经做过了相应的题目了,这个属于简不带小数点简化版,难度下降了不少(第一次做被干碎的恐惧
首先逆波兰表达式就是后缀表达式,这个不知道先上网搜下,不难。
之后就是处理数据了,首先说对数字的处理:先考虑正负数,如果是负数则从第一位遍历,再取相反数。数字是字符串的形式,要按位遍历,每次都将最高位*10再加上当前位置的数字(别忘了减‘0’,这是因为char是字符型,是ASCII码的形式,而要转换为真正的数字,差一个'0'),处理之后入栈。
然后就是分析现在是哪个符号了,根据不同的符号做出不同的操作,先出栈两个数字,再计算后入栈即可,最后返回top的值。
代码如下:
class Solution {
public:stack<int> stk;void Num(string s){int num = 0;if(s[0] != '-'){for(int i = 0; i < s.size(); i++)num = (num*10) + s[i] - '0';}else{for(int i = 1; i < s.size(); i++)num = (num*10) + s[i] - '0';num = -num;}stk.push(num);}void Calculate(string optr){int x = stk.top();stk.pop();int y = stk.top();stk.pop();if(optr == "+")stk.push(x + y);else if(optr == "-")stk.push(-x + y); else if(optr == "*")stk.push(x * y);else if(optr == "/")stk.push(y / x); }int evalRPN(vector<string>& tokens) {for(int i = 0; i < tokens.size(); i++){string temp = tokens[i];if(temp != "+" && temp != "-"//temp是数字&& temp != "*" && temp !="/"){Num(temp);}elseCalculate(temp);}int res = stk.top();stk.pop();return res;}
};
力扣150-逆波兰表达式求值(C++,附思路)相关推荐
- 力扣150. 逆波兰表达式求值(JavaScript)
var evalRPN = function(tokens) {let arr=[]const map = new Map([["+", (a, b) => a * 1 + ...
- 算法训练第十一天|力扣20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值
20. 有效的括号 题目链接:有效的括号 参考:https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B ...
- 算法训练Day11|LeetCode 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
题目链接:20. 有效的括号 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false 第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字 ...
- LetCode: 150. 逆波兰表达式求值
提示 LintCode中的相关算法题实现代码,可以在我的GithHub中下载. 题目需求 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另 ...
- Suzy找到实习了吗Day 11 |栈与队列中途 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值
Day 11 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值 20. 有效的括号 注意栈不是一个数据结构,需要自己用list实现栈的逻辑 class Solu ...
- 【栈】【150. 逆波兰表达式求值】【中等】(需回顾)
根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说 ...
- 【Java】LeetCode 150. 逆波兰表达式求值 (后缀表达式)
题目: 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话 ...
- leetcode 150. 逆波兰表达式求值(栈)
根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说,表达 ...
- 150. 逆波兰表达式求值。
根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 注意 两个整数之间的除法只保留整数部分. 可以保证给定的逆波兰表达式总是有效 ...
- 【Leetcode栈与队列】150. 逆波兰表达式求值(后缀表达式求值,看作对对碰游戏)
文章目录 Leetcode150 1.问题描述 2.解决方案 3.计算机的思考方式 Leetcode150 1.问题描述 2.解决方案 1.逆波兰表达式优点 2.逆波兰表达式相当于是二叉树中的后序遍历 ...
最新文章
- python自学网站推荐-有哪些值得推荐的Python学习网站?
- rust(70)-条件表达式
- ajax如何传超长字符串_解决ajax超长字符串、中文乱码问题
- React开发(155):请求方式得问题
- 13_python基础—函数进阶(参数、返回值、递归)
- Web Hacking 101 中文版 九、应用逻辑漏洞(三)
- linux中查看某个进程打开的文件数
- 《人月神话》读后感1
- adroid intent使用
- 量化投资与信用风险机器学习建模
- 2020年5月份编程语言排行榜
- PS4在Jetson nano下的配对使用,并用ROS接口来控制
- hgoi#20190510
- 公众号第三方平台开发 教程一 创建公众号第三方平台
- 未来5年到底是做什么生意最好?
- 卸载 AutoCAD 清理注册表
- Java开发指南!java生成word文档修改样式
- 京东2018校园招聘一面、二面
- 【Turing Award】Robin Milner And Butler W. Lampson
- MySQL数据库优化的几种方式(笔面试必问)
热门文章
- java多线程 文件夹_Java多线程遍历文件夹,广度遍历加多线程加深度遍历结合
- 事件处理-注册时间 // 事件处理-修饰符 // 事件处理-键盘事件的修饰符 // 事件处理-系统修饰符 // 事件处理-鼠标修饰符
- AngularJS-demo - 常用命令、内置服务、自定义服务、继承
- js检测弹出窗口拦截程序
- gdb+zbacktrace找到cpu过高php代码
- jQuery(一)、核心
- LeetCode之Max Points on a Line Total
- Vue中的hellow world描述el与data的基本使用--Vue知识点归纳(一)
- Javascript学习数据结构--字典
- An end-to-end TextSpotter with Explicit Alignment and Attention