括号匹配满足如下条件的字符串称为括号匹配的字符串

题目描述

满足如下条件的字符串称为括号匹配的字符串: 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')

如有帮助,望采纳!谢谢!

使用堆栈判断,左括号入栈,右括号出栈,最后堆栈为空就匹配。

已解决,嘿嘿