思路:

这题都把用栈直说出来了,用啊,为什么不用!其实之前学习数据结构的时候应该也已经做过了相应的题目了,这个属于简不带小数点简化版,难度下降了不少(第一次做被干碎的恐惧

首先逆波兰表达式就是后缀表达式,这个不知道先上网搜下,不难。

之后就是处理数据了,首先说对数字的处理:先考虑正负数,如果是负数则从第一位遍历,再取相反数。数字是字符串的形式,要按位遍历,每次都将最高位*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++,附思路)相关推荐

  1. 力扣150. 逆波兰表达式求值(JavaScript)

    var evalRPN = function(tokens) {let arr=[]const map = new Map([["+", (a, b) => a * 1 + ...

  2. 算法训练第十一天|力扣20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

    20. 有效的括号 题目链接:有效的括号 参考:https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B ...

  3. 算法训练Day11|LeetCode 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

    题目链接:20. 有效的括号 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false 第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字 ...

  4. LetCode: 150. 逆波兰表达式求值

    提示 LintCode中的相关算法题实现代码,可以在我的GithHub中下载. 题目需求 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另 ...

  5. Suzy找到实习了吗Day 11 |栈与队列中途 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

    Day 11 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值 20. 有效的括号 注意栈不是一个数据结构,需要自己用list实现栈的逻辑 class Solu ...

  6. 【栈】【150. 逆波兰表达式求值】【中等】(需回顾)

    根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说 ...

  7. 【Java】LeetCode 150. 逆波兰表达式求值 (后缀表达式)

    题目: 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话 ...

  8. leetcode 150. 逆波兰表达式求值(栈)

    根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说,表达 ...

  9. 150. 逆波兰表达式求值。

    根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 注意 两个整数之间的除法只保留整数部分. 可以保证给定的逆波兰表达式总是有效 ...

  10. 【Leetcode栈与队列】150. 逆波兰表达式求值(后缀表达式求值,看作对对碰游戏)

    文章目录 Leetcode150 1.问题描述 2.解决方案 3.计算机的思考方式 Leetcode150 1.问题描述 2.解决方案 1.逆波兰表达式优点 2.逆波兰表达式相当于是二叉树中的后序遍历 ...

最新文章

  1. python自学网站推荐-有哪些值得推荐的Python学习网站?
  2. rust(70)-条件表达式
  3. ajax如何传超长字符串_解决ajax超长字符串、中文乱码问题
  4. React开发(155):请求方式得问题
  5. 13_python基础—函数进阶(参数、返回值、递归)
  6. Web Hacking 101 中文版 九、应用逻辑漏洞(三)
  7. linux中查看某个进程打开的文件数
  8. 《人月神话》读后感1
  9. adroid intent使用
  10. 量化投资与信用风险机器学习建模
  11. 2020年5月份编程语言排行榜
  12. PS4在Jetson nano下的配对使用,并用ROS接口来控制
  13. hgoi#20190510
  14. 公众号第三方平台开发 教程一 创建公众号第三方平台
  15. 未来5年到底是做什么生意最好?
  16. 卸载 AutoCAD 清理注册表
  17. Java开发指南!java生成word文档修改样式
  18. 京东2018校园招聘一面、二面
  19. 【Turing Award】Robin Milner And Butler W. Lampson
  20. MySQL数据库优化的几种方式(笔面试必问)

热门文章

  1. java多线程 文件夹_Java多线程遍历文件夹,广度遍历加多线程加深度遍历结合
  2. 事件处理-注册时间 // 事件处理-修饰符 // 事件处理-键盘事件的修饰符 // 事件处理-系统修饰符 // 事件处理-鼠标修饰符
  3. AngularJS-demo - 常用命令、内置服务、自定义服务、继承
  4. js检测弹出窗口拦截程序
  5. gdb+zbacktrace找到cpu过高php代码
  6. jQuery(一)、核心
  7. LeetCode之Max Points on a Line Total
  8. Vue中的hellow world描述el与data的基本使用--Vue知识点归纳(一)
  9. Javascript学习数据结构--字典
  10. An end-to-end TextSpotter with Explicit Alignment and Attention