150. 逆波兰表达式求值
逆波兰表达式(后缀表达式)
- (1+2)x(3+4)的后续表达顺序是: 左右中
- 后缀表达式:12+34+x
使用栈 思路
1. 遇见数字就放入栈,遇见操作运算符,取出栈里的数字进行运算
2. 每次取元素的时候只取两个元素
3. 结果就是栈最后的元素
class Solution(object):
def evalRPN(self, tokens):
"""
:type tokens: List[str]
:rtype: int
"""
# create a stack
stack = []
# iterate the array
for i in range(len(tokens)):
# if we met the operater
if tokens[i] == '+' or tokens[i] == '-' or tokens[i] == '*' or tokens[i] == '/':
# since it's operater, we need prepare number
num1 = stack.pop()
num2 = stack.pop()
# plus
if tokens[i] == '+':
stack.append(int(num2+num1))
# minus
elif tokens[i] == '-':
stack.append(int(num2-num1))