没看答案。
import math
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
stack = []
# math.modf(x opt y)[0 or 1] 保留结果的小数部分:0,整数部分:1
opt = {'+': lambda x,y: x+y,
'-': lambda x,y: x-y,
'*': lambda x,y: x*y,
'/': lambda x,y: math.modf(x/y)[1]}
for ch in tokens:
# 负数字符串经过isdigit会返回false,所以要经过预处理
if ch.lstrip('-').isdigit():
stack.append(int(ch))
else:
num1 = stack.pop()
num2 = stack.pop()
stack.append(opt[ch](num2, num1))
return int(stack[0])