定义
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。
leetcode
20.Valid Parentheses(有效的括号)
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
parenthess_map = {")": "(", "}": "{", "]": "["}
list_left = []
if s == "}" or s == "]" or s == ")":
return False
for i in s:
if i == "(" or i == "{" or i == "[":
list_left.append(i)
elif len(list_left)> 0 and parenthess_map.get(i) == list_left[-1] :
list_left.pop()
else:
return False
if len(list_left) == 0:
return True
else:
return False
if __name__ == "__main__":
s = Solution()
nums = "(])"
print(s.isValid(nums))
32.Evaluate Reverse Polish Notation
class Solution(object):
def evalRPN(self, tokens):
"""
:type s: str
:rtype: int
"""
stack = []
for token in tokens:
if token in ['+', '-', '*', '/']:
a = stack.pop()
b = stack.pop()
if token == '+':
stack.append(b + a)
elif token == '-':
stack.append(b - a)
elif token == '*':
stack.append(b * a)
else:
stack.append(int(b / a))
else:
stack.append(int(token))
return stack.pop()
if __name__ == "__main__":
s = Solution()
nums = ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]
print(s.evalRPN(nums))