第二题 括号匹配
满足如下条件的字符串称为括号匹配的字符串: 1. 空字符串是括号匹配的字符串。 2. 若A是括号匹配的串,则(A)、[A]是括号匹配的字符串。 3. 若A、B是括号匹配的字符串,则AB也是括号匹配的字符串。 例如:()、[]、([])、()()都是括号匹配的字符串,而][、[(])则不是。 现在对于输入的字符串,判断它是否是括号匹配的字符串。
输入
一行,为一个仅由“(”、“)”、“[”、“]”组成的非空字符串。
输出
一行,“YES”或“NO”,分别表示输入的字符串括号匹配或不匹配。
输入样例1
([])
输出样例1
YES
输入样例2
())[]
输出样例2
NO
这道题主要是考察列表的实现,基本思路为当输入的是左括号的时候让其入列表,当输入的是右括号的时候与左括号进行匹配,如果可以匹配则为YES,不能则为NO
a=input()
b=[]
state=1#一个逻辑变量,进行判断
for i in a:
if i == '(' or i == '[' or i == '{':
b.append(i)
if i == ')' or i == ']' or i == '}':
if not b:#即如果b是空的,则逻辑变量为0,也就是无法匹配
state=0
else:
bottom=b[len(b)-1]#和输入中最后一个左括号匹配
if i == ')' and bottom == '(' or i == ']' and bottom == '[' or i == '}' and bottom == '{':
b.pop()#匹配完了就可以拜拜了
else:
state=0
if not b and state==1:
print("YES")
else:
print("NO")