逆波兰表达式求值

Serena ·
更新时间:2024-11-15
· 790 次阅读

逆波兰表达式求值 题目

根据逆波兰表示法,求表达式的值。
有效的运算符包括 + ,- ,* ,/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
链接:https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/

思路

运用lambda表达式和字典对运算符进行重载,再通过栈 stacks 对运算对象及中间结果进行存储

Python代码 class Solution: def evalRPN(self, tokens: List[str]) -> int: add = lambda a,b:a+b sub = lambda a,b:a-b mul = lambda a,b:a*b div = lambda a,b:int(a/b) maps = {'+':add,'-':sub,'*':mul,'/':div} stacks = [] for i in tokens: if i in maps: a = stacks.pop() b = stacks.pop() stacks.append(maps[i](b,a)) else: i = int(i) stacks.append(i) return stacks[-1] 相关知识点

1.lambda表达式
lambda 参数 : 操作
lambda表达式常与map函数一起使用

2.栈的理解和使用

执行结果

执行用时 : 44 ms, 在所有 Python3 提交中击败了93.09% 的用户
内存消耗 : 13.7 MB, 在所有 Python3 提交中击败了5.26%的用户


作者:背影成双。



逆波兰表达式

需要 登录 后方可回复, 如果你还没有账号请 注册新账号