本想用字典代替if判断会快,然而。。。并不会:
class Solution:
def __init__(self):
self.operator = {
'+': self.add,
'-': self.sub,
'*': self.mul,
'/': self.div,
}
def add(self, num1, num2):
return num1 + num2
def sub(self, num1, num2):
return num1 - num2
def mul(self, num1, num2):
return num1 * num2
def div(self, num1, num2):
return int(num1 / num2)
def evalRPN(self, tokens: List[str]) -> int:
if not tokens:
return 0
stack = []
for token in tokens:
#栈在遇到运算符之前只压入,遇到运算符后弹出两个值计算后把结果压入
#随后得到stack中只有一个值即是结果
if token not in self.operator:
stack.append(int(token))
else:
num2 = stack.pop()
num1 = stack.pop()
stack.append(self.operator[token](num1, num2))
return stack[0]