解析括号
堆栈通常用于解析。一个简单的解析任务是检查一串括号是否匹配。
例如,字符串 ([])
是匹配的,因为外部和内部括号形成对。()<>)
不匹配,因为最后一个 )
没有伙伴。([)]
也不匹配,因为对必须完全位于其他对内或外。
def checkParenth(str):
stack = Stack()
pushChars, popChars = "<({[", ">)}]"
for c in str:
if c in pushChars:
stack.push(c)
elif c in popChars:
if stack.isEmpty():
return False
else:
stackTop = stack.pop()
# Checks to see whether the opening bracket matches the closing one
balancingBracket = pushChars[popChars.index(c)]
if stackTop != balancingBracket:
return False
else:
return False
return not stack.isEmpty()