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]

最后更新于