列表(list):
栈(stack):
括号匹配问题:
定义栈的类
#定义栈的类
class Stack:
def __init__(self): #定义栈
self.stack=[]
def push(self,element): #添加元素
self.stack.append(element)
def pop(self): #取出元素
if len(self.stack)>0:
return self.stack.pop()
else:
return None
def get_top(self): #得到栈顶元素
if len(self.stack)>0:
return self.stack[-1]
else:
return None
def is_empty(self): #判断栈是否存在元素
return len(self.stack)==0
括号匹配问题代码
def brace_match(s):
match={'}':'{',']':'[',')':'('}
stack=Stack()
for ch in s:
if ch in {'(','{','['}: #如果初始是左括号就添加
stack.push(ch)
else:
if stack.is_empty(): #如果为空抛出异常
return False
elif stack.get_top()==match(ch): #如果为左括号匹配的右括号就弹出
stack.pop()
else: #不匹配抛出异常
return False
if stack.is_empty(): #如果最终为空成功
return True
else: #最终不为空不成功
return False