当前位置: 首页 > news >正文

【Leetcode每日一题】 综合练习 - 逆波兰表达式求值(难度⭐⭐)(73)

1. 题目解析

题目链接:150. 逆波兰表达式求值

这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。

2.算法原理

  1. 数据结构选择
    • 使用栈(stack<int>)来存储操作数,以便进行后进先出(LIFO)的操作。
    • 使用哈希映射(map<string, function<int(int, int)>>)来存储操作符及其对应的操作函数。
  2. 操作符函数映射
    • 通过map容器建立操作符到操作函数的映射,使得在遍历表达式时能够快速找到对应的操作符函数。
  3. 遍历表达式
    • 遍历输入的逆波兰表达式(RPN)中的每一个标记(tokens)。
  4. 操作符处理
    • 如果当前标记是操作符,则从栈中弹出两个操作数(右操作数在前,左操作数在后)。
    • 使用哈希映射中对应的操作函数对这两个操作数进行计算,并将结果压回栈中。
  5. 操作数处理
    • 如果当前标记是操作数,则将其转换为整数(stoi(s))并压入栈中。
  6. 结果返回
    • 遍历结束后,栈中只剩下一个元素,即逆波兰表达式的计算结果,返回该元素作为函数结果。
  7. 注意事项
    • 本算法假设输入的逆波兰表达式是有效的,即不包含无效的操作符、操作数以及除法运算中的零除错误。
    • 逆波兰表达式的特点是操作符在操作数之后,因此不需要考虑操作符的优先级问题。

3.代码编写

class Solution 
{
public:int evalRPN(vector<string>& tokens) {stack<int> st;map<string, function<int(int, int)>> opfunc{{"+", [](int x, int y){return x + y;}},{"-", [](int x, int y){return x - y;}},{"*", [](int x, int y){return x * y;}},{"/", [](int x, int y){return x / y;}}};for(auto& s : tokens){if(opfunc.find(s) != opfunc.end()){int r = st.top();st.pop();int l = st.top();st.pop();st.push(opfunc[s](l, r));}else{st.push(stoi(s));}}return st.top();}
};

The Last

嗯,就是这样啦,文章到这里就结束啦,真心感谢你花时间来读。

觉得有点收获的话,不妨给我点个吧!

如果发现文章有啥漏洞或错误的地方,欢迎私信我或者在评论里提醒一声~

http://www.lryc.cn/news/344826.html

相关文章:

  • 2G 3G LTE 5G的区别
  • 《21天学通C++》(第二十章)STL映射类(map和multimap)
  • 5月游戏市场迎来新的体验,网易两款游戏重磅出炉
  • 15_Scala面向对象编程_访问权限
  • LeetCode|700. Search in Binary Search Tree
  • MacOS下载安装JDK8
  • macOS 如何使用Visual Studio Code 编译C++
  • SQLite3简单操作
  • 从“制造”到“智造”:“灯塔”经验助力中国制造业转型升级-转载
  • C++ 容器(二)——容器操作
  • 操作系统——进程控制
  • Marin说PCB之国产电源芯片方案 ---STC2620Q
  • 已解决java.lang.StringIndexOutOfBoundsException: 字符串索引越界异常的正确解决方法,亲测有效!!!
  • 关于实体类注解@Data、@EqualsAndHashCode(callSuper = true)、@Accessors(chain = true)的作用
  • 5.9号模拟前端面试10问
  • vue3 JSX的使用与警告【JSX 元素隐式具有类型 “any“,因为不存在接口 “JSX.IntrinsicElements“】解决办法
  • 一、计算机基础(Java零基础一)
  • 德国著名自动化公司Festo设计了一款仿生蜜蜂,仅重34g,支持多只蜜蜂编队飞行!...
  • 折腾记:C++用开源库Snap7通过S7协议连接西门子PLC
  • Android studio 新版本 NewUI toolbar显示快捷按钮
  • 辛普森公式求函数的近似积分【通用计算】
  • 即插即用 | YOLOv8热力图可视化方法详解,揭秘AI如何「看」世界!【附完整源码】
  • 多线程学习D10 收尾了应该
  • ai可以做思维导图吗?当然是可以的!
  • 景源畅信数字:抖音小店的入住门槛大不大?
  • 鸿蒙开发-ArkTS语言-容器-非线性容器
  • 【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
  • 【设计模式】单例模式的前世今生
  • 厦门网上在线教育系统,线下老师怎么转型到线上网上授课?
  • Spring底层入门(九)