class Solution:
def evalRPN(self, tokens: List[str]) -> int:
stack = []
for i in tokens:
if i in {"+","-","*","/"}:
last = stack.pop()
first = stack.pop()
#eval()将字符串表达式转化为正常表达式
# f'{变量名}' 允许动态更新字符串内容,最后返回字符串
ans = int(eval( f' {first} {i} {last} ' ))
stack.append(ans)
else:
stack.append(i)
return int(stack.pop())
思路:
此题比较简单
将数字依次入栈,每逢operator就将栈顶元素和次栈顶元素弹出做运算;
运算结果压入栈中参与下次运算。
逆波兰表达式只要根据从左至右的顺序进行计算就可以得到和中缀表达式一样的最终答案