Python用栈实现括号匹配求解

求问以下代码实现与样例不同
样例:输入:())[] 输出:NO
代码:a=list(input())

left="( ["
right=") ]"
d={')':'(',']':'['}

for i in a:
b=[]
reslut="YES"
if i in left:
b.append(i)
elif i in right:
if len(b)<1:
result="NO"
break
elif d[i]==b[-1]:
b.pop()
else:
result="NO"
break
else:
continue
if len(b) >0:
result="NO"
else:
result="YES"
print(result)

输出结果为YES

你题目输入的只有 ()[] ,没有{} 吗?
你题目的解答代码如下:

a=list(input())
left="([{"
right=")]}"
d={')':'(',']':'[','}':'{'}
reslut="YES"
b=[]
for i in a:
    if i in left:
        b.append(i)
    elif i in right:
        if len(b)<1:
            result="NO"
            break
        elif d[i]==b[-1]:
            b.pop()
        else:
            result="NO"
            break
else:  #只有正常循环结束才需要判断 len(b) >0 用 break跳出循环不需要判断
    if len(b) >0:
        result="NO"
    else:
        result="YES"
print(result)

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


import re
a = '([{<>}])'
b = 'a+(b-c)*cos(a**2+b**2)'

def isMatch(a,b):
    r = '[' + re.sub('(.)', r'\\\1', a) + ']'
    c = re.findall(r,b)
    if len(c)%2==1:
        return 'No'
    x = []
    for i in c:
        if len(x)>0 and x[len(x)-1]+a.index(i)+1==len(a):
            x.pop(len(x)-1)
            continue
        x.append(a.index(i))
    if len(x)==0:
        return 'Yes'
    else:
        return 'No'

print(isMatch(a,b))
def match_parentheses(s):
    # 把一个list当做栈使用
    ls = []
    parentheses = "()[]{}"
    for i in range(len(s)):
        si = s[i]
        # 如果不是括号则继续
        if parentheses.find(si) == -1:
            continue
        # 左括号入栈
        if si == '(' or si == '[' or si == '{':
            ls.append(si)
            continue
        if len(ls) == 0:
            return False
        # 出栈比较是否匹配
        p = ls.pop()
        if (p == '(' and si == ')') or (p == '[' and si == ']') or (p == '{' and si == '}'):
            continue
        else:
            return False

    if len(ls) > 0:
        return False
    return True


if __name__ == '__main__':
    
    s = input()
    result = match_parentheses(s)
    if result:
        print("YES")
    else:
        print("NO")

亲测AC