题目描述
满足如下条件的字符串称为括号匹配的字符串: 1. 空字符串是括号匹配的字符串。 2. 若A是括号匹配的串,则(A)、[A]是括号匹配的字符串。 3. 若A、B是括号匹配的字符串,则AB也是括号匹配的字符串。 例如:()、[]、([])、()()都是括号匹配的字符串,而][、[(])则不是。 现在对于输入的字符串,判断它是否是括号匹配的字符串。
输入
一行,为一个仅由“(”、“)”、“[”、“]”这4种括号类型组成的非空字符串。
输出
一行,“YES”或“NO”,分别表示输入的字符串括号匹配或不匹配。
输入样例1
([])
输出样例1
YES
输入样例2
())[]
输出样例2
NO
输入样例3
(
输出样例3
NO
输入样例4
)
输出样例4
NO
输入样例5
)(
输出样例5
NO
用栈来做,左右括号分别用入栈和出栈进行一一对应
你题目的解答代码如下:
def isValid(s):
match = {'}':'{',')':'(',']':'['}
stack = []
if len(s)%2 == 1:
return False
for ch in s:
if ch in ['(','[','{']:
stack.append(ch)
elif ch in [')','}',']']:
if len(stack) <=0:
return False
elif stack[-1] == match[ch]:
stack.pop()
else:
return False
if len(stack)==0:
return True
else:
return False
s = input()
if isValid(s):
print('YES')
else:
print('NO')
如有帮助,望采纳!谢谢!
使用堆栈判断,左括号入栈,右括号出栈,最后堆栈为空就匹配。
已解决,嘿嘿