150. 逆波兰表达式求值
https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/
解法一:栈
遇到数就入栈,遇到运算符就将栈顶与次栈顶元素运算
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
ops = set(['+', '-', '*', '/']) #运算符集合
stack = [] #栈
#用lambda表达式使运算简洁
#注意多个lambda式合并的写法
#注意py3中对负数向下取整,要保留整数位需特殊处理
cal = {"+" : lambda x,y :x+y, "-" : lambda x,y : x-y, "*" : lambda x,y : x*y, "/" : lambda x,y : int(x/y)}
#处理每个字符
for t in tokens:
if t in ops:
num1 = stack.pop()
num2 = stack.pop()
#注意运算顺序
stack.append(cal[t](num2, num1))
else:
stack.append(int(t))
return stack[0]
最后更新于