描述:
求逆波兰表达式的值。
在逆波兰表达法中,其有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。
样例:
[“2”, “1”, “+”, “3”, ““] -> ((2 + 1) 3) -> 9
[“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6
分析:开始想着遍历tokens,判断是不是数字用isdigit函数,后来发现当i为负数时也归为不是数字,所以用了if i not in [“+”,”-“,”*”,”/”],写代码的时候要注意数据类型转换
def evalRPN(self, tokens):
if len(tokens)==1:
result=int(tokens[0])
B= []
for i in tokens:
if i not in ["+","-","*","/"]:
B.append(int(i))
elif i=="+":
temp1=B.pop()
temp2 = B.pop()
result = temp2 +temp1
B.append(result)
elif i=="-":
temp1 = B.pop()
temp2 = B.pop()
result = temp2 - temp1
B.append(result)
elif i=="*":
temp1 = B.pop()
temp2 = B.pop()
result = temp2 * temp1
B.append(result)
elif i=="/":
temp1 = B.pop()
temp2 = B.pop()
result = int(temp2 / temp1)
B.append(result)
return result
简化:
def evalRPN(self, tokens):
B= []
if len(tokens)==1:
B.append(int(tokens[0]))
for i in tokens:
if i not in ["+","-","*","/"]:
B.append(int(i))
else:
temp1=B.pop()
temp2 = B.pop()
if i=="+":
B.append(temp2 + temp1)
elif i=="-":
B.append(temp2 - temp1)
elif i=="*":
B.append(temp2 * temp1)
elif i=="/":
B.append(int(temp2 / temp1))
return B[0]