逆波兰表达式计算

  • 维持一个栈,存储操作数
  • 遇到操作数则入栈
  • 遇到运算符,则从弹出两个操作数进行计算,并将结果再存入栈中

注:这道题的除非运算,必须取整(四舍五入),即用int(b/a),而不能用b//a,双斜杠都是向下取整。

# 
# @param tokens string字符串一维数组 
# @return int整型
#
class Solution:
    def evalRPN(self , tokens: List[str]) -> int:
        stack = []  # 存储操作数
        for i in tokens:
            if i in "+-*/":
                a = stack.pop()
                b = stack.pop()
                # 加减乘除
                if i == '+':
                    stack.append(b+a)
                elif i == '-':
                    stack.append(b-a)
                elif i == '*':
                    stack.append(b*a)
                else:
                    stack.append(int(b/a))  # 取整,四舍五入
            else:
                stack.append(int(i))
        return stack[0]