题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个逆波兰表达式,该表达式与后缀表达式类似,但是只有四则运算,所以遇到符号就能弹栈两个数立即计算并入栈。

思路分享

  • 由于逆波兰表达式的特性,只要处理好遇到符号时取两数计算以及入栈数字的情况即可。

  • 这里得补充一个 Python 除法的小知识点,与 CPP 等语言不同,Python 的整数无上限,同时除法时的抹零特性也并非向零截断,而是向下截断。所以需要int(a / float(b))的整型转化来模拟取零。

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
stk = list()
for token in tokens:
#$ print(stk)
if token == "/":
b = stk.pop()
a = stk.pop()
stk.append(int(a / float(b)))
elif token == "+":
stk.append(stk.pop() + stk.pop())
elif token == "-":
b = stk.pop()
a = stk.pop()
stk.append(a - b)
elif token == "*":
stk.append(stk.pop() * stk.pop())
else:
stk.append(int(token))

return stk[0]