【Python数据结构与算法】栈----括号配对

举报
是Dream呀 发表于 2024/08/28 22:22:38 2024/08/28
【摘要】 题目:括号配对描述字符串中可能有三种成对的括号,"( )"、"[ ]"、"{ }"。请判断字符串的括号是否都正确配对。无括号也算正确配对。括号交叉算不正确配对,例如"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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。