描述:
现在,有一行括号序列,请你检查这行括号是否配对。
输入:
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据
每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),
测试数据组数少于5组。数据保证S中只含有"[", “]”, “(”, “)” 四种字符
输出:
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入:
样例输出:
No
No
Yes
分析:
首先经简单分析,如果所有括号都配对,那么字符串的长度必定是偶数,所以先经过奇偶数判断,如果长度为奇数可以直接输出No。
如果字符串长度是偶数,则进行如下操作:当字符串不为‘空’时,遍历字符串,如果字符串中存在‘[]’或者‘()’则将这部分从字符串中删除,并且更新字符串。当字符串的长度不为零时(即有的括号无法去除),则打印No
如果更新后的字符串长度为0,则打印Yes
代码如下:
n=int(input())
for i in range(n):
s=input()
if len(s)%2!=0:
print('No')
else:
while s!='':
if '[]' in s:
s=s.split('[]')
s=''.join(s)
elif '()' in s:
s=s.split('()')
s="".join(s)
elif '[]'or '()' not in s:
print('No')
break
if s=='':
print('Yes')
不得不说,python有的时候真的挺方便的(笑哭.jpg)