nyoj2 括号配对问题

描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据
每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),
测试数据组数少于5组。数据保证S中只含有"[", “]”, “(”, “)” 四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入:

3
[(])
(])
([])

样例输出:

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)

猜你喜欢

转载自blog.csdn.net/weixin_43262763/article/details/84405151