逆波兰表达式求值
思路
初始化
一个栈
遍历
整个tokens
,遇到数字
时将其压入到栈
中,遇到运算符
时,从栈
中取两个数字
进行运算
,将运算完的结果
压入到栈
中,继续向后遍历
- 当
遍历完后
,留在栈
中的元素
就是最后的结果
,return即可
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
stack = [] # 存放的是整数
arr = ['+','-','*','/']
for i in tokens:
if i not in arr: # 说明是数字
stack.append(int(i))
else:
num1 = stack.pop()
num2 = stack.pop()
if i == '+':
stack.append(num2 + num1)
elif i == '-':
stack.append(num2 - num1)
elif i == '*':
stack.append(num2 * num1)
else:
stack.append(int(num2 / num1))
return stack.pop()