题目如下(答案在最后, 如有更好的方法请在评论区回复)

逆波兰表达式根据 逆波兰表示法,求表达式的值。

有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

注意 两个整数之间的除法只保留整数部分。

可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。

class Solution {
public:int evalRPN(vector<string>& tokens) {}
};

难点:

1, 字符串型转化为整数型;

2, 识别数字与运算符;

 思路:

1, 利用栈存取数字;

2, 遇到数字入栈, 遇到运算符弹出两个栈顶;

3, 弹出两个栈顶, 运算后的数字入栈;

4, 最后返回栈顶, 栈顶就是运算结果.

class Solution {
public:int clac(int a,int b, string c){int result;if(c == "+"){result = a+b;}else if(c == "-"){result = a-b;}else if(c == "*"){result = a*b;}else if(c == "/"){result = a/b;}return result;}int evalRPN(vector<string>& tokens) {stack<int> Stk;int num1;int num2;for(int i = 0; i < tokens.size(); i++){if(tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/" ){num2 = Stk.top();Stk.pop();num1 = Stk.top();Stk.pop();Stk.push(clac(num1,num2,tokens[i]));}else{Stk.push(atoi(tokens[i].c_str()));}}return Stk.top();}
};

我的第一次错误思路:

1, 第一次遇到运算符, 弹出两个数字, 赋值到num1, num2, 运算后赋值给num2;

2, 第二次遇到运算符, 弹出一个数字, 赋值到num1, 与num2计算, 计算结果赋值到num2;

问题: 只能解决" 2, 1, 3, -, * "的情况, 运算符后面有数字则会计算错误;

关于字符串转化为数字:

1, 字符串转化为浮点数: atof函数

2, 将string对象转换为c中的字符串样式: c_str函数

C++刷题: 逆波兰表达式(力扣150题)相关推荐

  1. 征战蓝桥 —— 2013年第四届 —— C/C++A组第6题——逆波兰表达式

    标题:逆波兰表达式 正常的表达式称为中缀表达式,运算符在中间,主要是给人阅读的,机器求解并不方便. 例如:3 + 5 * (2 + 6) - 1 而且,常常需要用括号来改变运算次序. 相反,如果使用逆 ...

  2. 蓝桥c++2013真题:逆波兰表达式(代码填空题)

    v1是对下值1  递归求逆波兰表达式 则v2应是对值2  递归求逆波兰表达式 所以应该找到值2开始的位置x+1+v1.n 答案:     v2 = evaluate(x+1+v1.n);

  3. leetcode算法题--逆波兰表达式求值

    题目链接:https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/ 这个题目也是常见题目,很简单 int evalRPN(v ...

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

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

  5. 程序员面试需要刷力扣算法题吗

    这里写目录标题 1. 程序员面试需要刷力扣算法题吗 1.1. 算法题的一些特征 1.2. 为什么要考查算法 1.3. 目前面试主要考查 3 类 1. 程序员面试需要刷力扣算法题吗 1.1. 算法题的一 ...

  6. (补)算法训练Day13 | LeetCode150. 逆波兰表达式求值(栈应用);LeetCode239. 滑动窗口最大值(单调队列);LeetCode347. 前K个高频元素(小顶堆,优先级队列)

    目录 LeetCode150. 逆波兰表达式求值 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode239. 滑动窗口最大值 1. 思路 2. 代码实现 3. 复杂度分析 4. ...

  7. 代码随想录第11天 | LeetCode20. 有效的括号、LeetCode1047. 删除字符串中的所有相邻重复项、LeetCode150. 逆波兰表达式求值

    day11 | LeetCode20. 有效的括号.LeetCode1047. 删除字符串中的所有相邻重复项.LeetCode150. 逆波兰表达式求值 文章目录 day11 | LeetCode20 ...

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

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

  9. 力扣编程题-解法汇总

    一.力扣链接: 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 备注:以后每个工作日从前往后刷一道题,然后再加一道每日新题.每天两道题. 二.模版: 标题: 力扣解法汇总5-正则表达 ...

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

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

最新文章

  1. DATEIF实例说明4
  2. 设计一个魔方(六面)的程序 【微软面试100题 第四十四题】
  3. 本次案例:对于sun 服务器的故障排查
  4. Maven搭建SpringMVC+Mybatis项目详解【转】
  5. 合泰单片机做电压表_启士 | 蓝桥杯零基础单片机教程9 I2C介绍(上)
  6. easyx 备忘录_报到?上课?我被自己的备忘录骗到了
  7. 深入学习SpringMVC以及学习总结
  8. 软件测试 学习之路 基本介绍
  9. 蓝宝石会升级bios吗_别再听别人忽悠!升级BIOS的三大误区
  10. 远程计算机关闭了怎么办,怎么远程关闭电脑 远程关闭电脑方法【详细步骤】...
  11. html鼠标自动向下滑动,基于JavaScript实现鼠标向下滑动加载div的代码
  12. Java 输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)
  13. 数据库的事务隔离级别
  14. 视频编解码(五):解码器驱动代码理解
  15. PS小技巧 | 不需要抠图的黑白配
  16. G - Power Strings
  17. 算法导论第三版习题及答案
  18. java出现com.lowagie.text。DocumentException:字体“C: \ Windows \ \ simsun字体。带有'Identity-H'的ttc'不被识别的错误
  19. 基于Java医院网上预约挂号系统设计与实现(含源代码)
  20. w10打游戏老是弹出计算机,win10游戏频繁弹回桌面怎么办_win10玩游戏总切回桌面的解决方法-系统城...

热门文章

  1. hⅰgh怎么读音发音英语_英语发音规则---gh
  2. 芯片测试的目的及原理介绍
  3. excel 复选框 制作动态表格
  4. 论文查重系统如何才安全?
  5. c语言数字转化为英文版,(C语言编写的英语数字转化代码数字转化为用英语表达的数字.doc...
  6. 【Python】:修改图片后缀
  7. 机器学习中的数学(八):卡方分布(Chi-squared Distribution) t分布(T Distribution)F分布(T Distribution)
  8. 使用高德地图JS API开发地图应用之获取Key及Jscode
  9. linux mentohust dhcp,校园网锐捷 openwrt mentohust 成功开启IPv6
  10. Neutron的Port详解