力扣:150. 逆波兰表达式求值(Python3)

题目:

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

注意:

  • 有效的算符为 '+''-''*''/'
  • 每个操作数(运算对象)都可以是一个整数或者另一个表达式。
  • 两个整数之间的除法总是 向零截断
  • 表达式中不含除零运算。
  • 输入是一个根据逆波兰表示法表示的算术表达式。
  • 答案及所有中间计算结果可以用 32 位 整数表示。

来源:力扣(LeetCode)

链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

示例:

示例 1:

输入:tokens = "2","1","+","3","\*"

输出:9

解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9

示例 2:

输入:tokens = "4","13","5","/","+"

输出:6

解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6

示例 3:

输入:tokens = "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

解法:

使用栈操:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中。

知识点:

**1.赋值顺序:**赋值顺序是从左往右,例如num2, num1 = stack.pop(), stack.pop(),栈顶元素给num2,栈次顶元素给num1 。

2.str.startswith(prefix, start\[, end]) **:**如果prefix在str中以start开头,以end结尾,返回结果为True,否则返回False,start默认值为0。

**3.eval(expression, globals\[, locals]):**expression表示表达式;globals表示变量作用域,全局命名空间,如果被提供,则必须是一个字典对象;locals表示变量作用域,局部命名空间,如果被提供,可以是任何映射对象。例如:x=7,eval( '3 * x' ),输出21。

代码:

python 复制代码
class Solution:
    def evalRPN(self, tokens: List[str]) -> int:
        stack = []
        for token in tokens:
            if token.isdigit() or token.startswith('-') and len(token) > 1:
                stack.append(token)
            else:
                num2, num1 = stack.pop(), stack.pop()
                stack.append(int(eval(str(num1) + token + str(num2))))
        return int(stack[0])
相关推荐
2401_8414956414 分钟前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
AI云海36 分钟前
python 列表、元组、集合和字典
开发语言·python
二十雨辰1 小时前
[爬虫]-Urllib
爬虫·python
玉鸯3 小时前
Agent Hook:在概率推理之上,为 Agent 叠加确定性控制
python·langchain·agent
weixin_446260853 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
我的xiaodoujiao4 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
qetfw4 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具
爱刷碗的苏泓舒4 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
用户8356290780515 小时前
Python 实现 Excel 页面布局与打印设置自动化
后端·python