nyoj2 括號配對問題
阿新 • • 發佈:2018-11-25
描述:
現在,有一行括號序列,請你檢查這行括號是否配對。
輸入:
第一行輸入一個數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)