# 用一个函数解决括号匹配问题
def zifu(str): # 定义函数
zuo = "{(<["
you = "})>]"
zong = {"}": "{", ")":"(", ">": "<", "]": "["} # 定义括号字典
stack = [] # 定义一个空栈
for char in str:
if char in zuo:
stack.append(char) # 为左括号存入栈内
if char in you:
if stack == []: # 检查栈是否为空栈
return False
else:
if zong[char] == stack[-1]: # 匹配括号
stack.pop() # 匹配成功,将栈中最后一个括号删除
else:
return False # 匹配不成功,返回False
return stack == [] # 最后检查栈是否为为空栈
str1 = "((())){}[]"
str2 ="(((}"
i = zifu(str1)
n = zifu(str2)
print(i)
print(n)
注:用字典时要注意键为右括号,值为左括号。用右括号去找左括号。