【Python数据结构与算法】栈----括号配对
【摘要】 题目:括号配对描述字符串中可能有三种成对的括号,"( )"、"[ ]"、"{ }"。请判断字符串的括号是否都正确配对。无括号也算正确配对。括号交叉算不正确配对,例如"12{34[78}ab]"就不算正确配对。但是一对括号被包含在另一对括号里面,例如"12{ab[8]}"不影响正确性。输入第一行为整数n(n<40),接下来有n行,每行一个无空格的字符串,长度小于1000。输出对每行字符串,如...
题目:括号配对
描述
字符串中可能有三种成对的括号,"( )"、"[ ]"、"{ }"。请判断字符串的括号是否都正确配对。无括号也算正确配对。括号交叉算不正确配对,例如"12{34[78}ab]"就不算正确配对。但是一对括号被包含在另一对括号里面,例如"12{ab[8]}"不影响正确性。
输入
第一行为整数n(n<40),接下来有n行,每行一个无空格的字符串,长度小于1000。
输出
对每行字符串,如果括号配对,输出"YES",否则输出"NO"。
样例输入
2
12{ab[8]}
12{34[78}ab]
样例输出
YES
NO
AC代码
def match(s):
stack = []
pairs = {")":"(", "]":"[", "}":"{" }
for x in s:
if x in "([{":
stack.append(x)
elif x in ")]}":
if len(stack) == 0 or stack[-1] != pairs[x]:
return False
stack.pop()
return len(stack) == 0
n = int(input())
for i in range(n):
if match(input()):
print("YES")
else:
print("NO")
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)