Leetcode做题日记:20. 有效的括号 (PYTHON)

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:
输入: “()”
输出: true

示例 2:
输入: “()[]{}”
输出: true

示例 3:
输入: “(]”
输出: false

示例 4:
输入: “([)]”
输出: false

示例 5:
输入: “{[]}”
输出: true

        L=len(s)
        if L%2!=0:
            return False
        LL=[]
        A={'(':0,'[':1,'{':2,')':3,']':4,'}':5}
        k=0
        for i in s:
            LL.append(i) #栈
            if k>=1 and len(LL)>=2:
                if A[LL[-2]]==A[LL[-1]]-3: #看是不是一对,是的话就是消消乐
                    LL.pop()
                    LL.pop()
            k=k+1
        if LL==[]:
            return True
        else:
            return False
#用栈的思想,删除最里面的最小的(),再依次往外删除,比如([{}]())
#执行过程是:(,([,([{,([,(,((,(, ,
#在这里我通过字典来判断是否为一对()
#添加了s不是偶数的判断

#我第一次做的代码,我的想法是找到对称分段,比如(),({}),{[]}等来判断,可以
#很好判断()[{}][]
#但是当遇到{[()]()}这种不对称的情况,就无能为力
        L=len(s)
        A={'(':0,'[':1,'{':2}
        B={')':0,']':1,'}':2}
        st=0
        end=1
        i=1
        if L==1:
            return False
        while st <L:
            if s[st] in A:
                a=A[s[st]]
                if end >=L:
                    return False
                if s[end] in B:
                    b=B[s[end]]
                    if a==b:
                        st=end+1
                        end=st+1
                    else:
                        return False
                else:
                    if end+i==L:
                        return False
                    while s[end+i]  in A:
                        i=i+1
                    if st+2*i+2>L:
                        return False
                    S=s[st:st+2*i+2]
                    l=len(S)
                    for j in range(i+1):
                        if S[l-1-j]not in B or A[S[j]]!=B[S[l-1-j]]:
                            return False
                    st=st+2*i+2
                    end=st+1
            else:
                return False
            i=1
            
        return True  

猜你喜欢

转载自blog.csdn.net/weixin_44033136/article/details/85321841
今日推荐