根据逆波兰表示法,求表达式的值。
有效的运算符包括 + ,- ,* ,/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
链接: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%的用户