思路
- 逆波兰表达式:
是一种后缀表达式,后缀就是指算符写在后面。
平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 ) 。
该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * ) 。
一、栈
- 循环遍历字符串,遇到数字则入栈;遇到运算符则取出栈顶两个数字进行计算,并将结果压入栈中
- 遍历结束,此时栈中只剩一个元素,弹出栈顶元素,转化为int。
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
res=list()
for item in tokens:
if item not in ("+","-","*","/"):
res.append(item)
else:
#当前元素是运算符
first_num=res.pop()
second_num=res.pop()
#表达式第二个元素在前
exp=f'{second_num}{item}{first_num}'
#运算结果入栈
res.append(int(eval(exp)))
#当字符串只有一个字符,加上int转为整数型
return int(res.pop())