后缀表达式转为中缀表达式并输出值
伪代码:
+-*/在op_map里
定义:
栈//stack=[]
对于token在给定tokens里:
如果token不是+-*/:
栈里添加token
不然;
弹出第一个值//op2=stack.pop()
弹出第二个值//op1=stack.pop()
栈中加入 token在op_map里对应函数后和op1、op2运算的结果//op2先出栈,放在运算式后面
返回 栈中弹出值
代码:
from operator import add, sub, mul
class Solution:
op_map = {'+': add, '-': sub, '*': mul, '/': lambda x, y: int(x / y)}
def evalRPN(self, tokens: List[str]) -> int:
stack = []
for token in tokens:
if token not in {'+', '-', '*', '/'}:
stack.append(int(token))
else:
op2 = stack.pop()
op1 = stack.pop()
stack.append(self.op_map[token](op1, op2)) # 第一个出来的在运算符后面
return stack.pop()