题解 | #逆波兰表达式求值#
逆波兰表达式求值
http://www.nowcoder.com/practice/885c1db3e39040cbae5cdf59fb0e9382
逆波兰表达式计算
- 维持一个栈,存储操作数
- 遇到操作数则入栈
- 遇到运算符,则从弹出两个操作数进行计算,并将结果再存入栈中
注:这道题的除非运算,必须取整(四舍五入),即用int(b/a),而不能用b//a,双斜杠都是向下取整。
#
# @param tokens string字符串一维数组
# @return int整型
#
class Solution:
def evalRPN(self , tokens: List[str]) -> int:
stack = [] # 存储操作数
for i in tokens:
if i in "+-*/":
a = stack.pop()
b = stack.pop()
# 加减乘除
if i == '+':
stack.append(b+a)
elif i == '-':
stack.append(b-a)
elif i == '*':
stack.append(b*a)
else:
stack.append(int(b/a)) # 取整,四舍五入
else:
stack.append(int(i))
return stack[0]