题目:
逆波兰表达式求值:根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
说明:
- 整数除法只保留整数部分。
- 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 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]