思路:使用pop和append函数模拟堆栈,元素依次入栈,遇到运算符弹出两个元素进行运算,并将结果再压入堆栈。
注意:力扣里面复数是向下取整的,也就是说你的除法计算结果如果是-0.05,他会记为-1,而我们想要的是0.我的解决方式是先转为浮点型计算,再将结果取整型。
原题如下:
通过代码如下:
class Solution(object):
def evalRPN(self, tokens):
"""
:type tokens: List[str]
:rtype: int
"""
s = []
for i in range(len(tokens)):
if tokens[i] == "+" or tokens[i] == "-" or tokens[i] == "*" or tokens[i] == "/":
a = s.pop()
b = s.pop()
if tokens[i] == "+":
c = int(b) + int(a)
s.append(c)
if tokens[i] == "-":
c = int(b) - int(a)
s.append(c)
if tokens[i] == "*":
c = int(b) * int(a)
s.append(c)
if tokens[i] == "/":
c = int(float(b) / float(a))
s.append(c)
else:
s.append(tokens[i])
if len(tokens) <= 2:
s = copy.deepcopy(tokens)
return int(s[0])