Leetcode练习(Python):栈类:第150题:逆波兰表达式求值:根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
题目:
逆波兰表达式求值:根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
说明:
- 整数除法只保留整数部分。
- 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
思路:
使用辅助栈来实现,思路较简单,注意除法运算的整数处理就好。
程序:
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
if not tokens:
return 0
length = len(tokens)
stack1 = []
stack2 = []
for index in range(length):
if tokens[index] not in "+-*/":
stack1.append(int(tokens[index]))
else:
stack2.append(stack1.pop())
stack2.append(stack1.pop())
num1 = stack2.pop()
num2 = stack2.pop()
if tokens[index] == "+":
auxiliary = num1 + num2
elif tokens[index] == "-":
auxiliary = num1 - num2
elif tokens[index] == "*":
auxiliary = num1 * num2
else:
auxiliary = int(num1 / num2)
stack1.append(auxiliary)
return stack1[-1]
浙公网安备 33010602011771号