【简单】5、有效的括号(知识点:栈)

'''
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

'''

'''方法1
def isValid(s):
    while '{}' in s or '[]' in s or '()' in s:
        s = s.replace('{}','')
        s = s.replace('()','')
        s = s.replace('[]','')

    return s == ''

s = "{[]}"
print(isValid(s))
'''

def isValid(s):
    # hashMap = {')':'(',']':'[','}':'{'}
    hashMap = {'(':')' , '[':']' , '{':'}' }
    stack = []
    for chr in s:
        if chr in hashMap:
            # 如果s里面的值在hashmap的key里面,则将值放到stack列表中(栈)
            stack.append(hashMap.get(chr))
        # 判断stack不为空,并且stack最后一位是否和s中的当前位一致,如果一致,则将stack的栈顶数据去除,如果最终stack为空,则表示是对称的
        elif stack and stack[-1] == chr: # 需要判断stack不为空,不然stack[-1]可能不存在会报错
            stack.pop()
        # 如果不满足以上条件,则直接返回错误
        else:
            return False
    return not stack # python机制:变量不为空或者不为None,取true;not stack,若stack为空,则not stack返回true;若stack不为空,则not stack返回false
s = "{[]}"
print(isValid(s))
posted on 2022-05-16 21:43  墙角一枝花  阅读(26)  评论(0编辑  收藏  举报