Evaluate Reverse Polish Notation

leetcode第150题,求解逆波兰表达式。
这个题套路很清楚,用栈进行模拟就可以了,但是这里面有几个需要注意的地方。

  1. 因为是要依次把token入栈,所以遍历token数组是大循环的条件。
  2. 最后结果返回也是在token数组用完之后。
  3. 除法和减法要注意操作数有先后关系。
  4. 没有操作符的时候,直接返回最后一个操作数
  5. python中的除法有点奇怪,需要做一定的修改
class Solution:
    def evalRPN(self, tokens):
        """
        :type tokens: List[str]
        :rtype: int
        """
        stack = []
        operate = ["+", "-", "*", "/"]
        i = 0
        for i in range(len(tokens)):
            if tokens[i] not in operate:
                stack.append(int(tokens[i]))
                tmp = int(tokens[i])
            else:
                op1 = stack[-1]
                del stack[-1]
                op2 = stack[-1]
                del stack[-1]
                if tokens[i] == "+":
                    tmp = op1+op2
                if tokens[i] == "-":
                    tmp = op2-op1
                if tokens[i] == "*":
                    tmp = op1*op2
                if tokens[i] == "/":
                    tmp = int(op2 *1.0 / op1)
                stack.append(tmp)
        return tmp


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页