数据结构与算法(Python版)
栈的应用
1. 简单括号匹配
每个开括号都要恰好对应一个闭括号,对括号是否正确匹配的识别,是很多语言编译器的基础算法。
from pythonds.basic.stack import Stack
def parChecker(parStr):
s = Stack()
for i in range(len(parStr)):
if parStr[i] == '(':
s.push(parStr[i])
else:
if s.isEmpty():
return False
else:
s.pop()
if s.isEmpty():
return True
else:
return False
if __name__ == '__main__':
print(parChecker('()()()'))
print(parChecker('((()))'))
print(parChecker('(((()))))'))
2. 多种括号匹配
def multiMatch(mulStr):
s = Stack()
for i in range(len(mulStr)):
if mulStr[i] in '([{':
s.push(mulStr[i])
else:
if s.isEmpty():
return False
else:
item = s.pop()
if not match(item, mulStr[i]):
return False
if s.isEmpty():
return True
else:
return False
def match(str1, str2):
opens = '([{'
closers = ')]}'
return opens.index(str1) == closers.index(str2)