有效括号

https://leetcode-cn.com/problems/valid-parentheses/
思路:要求是字符串中的括号都成对出现而且不能交叉错杂的情况,通过实例可以看出,有效字符串中只允许出现’()’ ‘[]’ ‘{}’ 或者’{[()]}'这两种形式,其余都算无效。即可以遍历这个字符串,将一开始出现的左括号存入一个列表中,之后若出现与其对应的右括号则将该左括号从列表中删除,若最终列表无元素,则有效,反之无效。

class Solution:
    def isValid(self, s: str) -> bool:
        dic = {'(':')','[':']','{':'}'}#建立一个字典便于之后的对应,比写三个if要方便。字典
        #中的'(':')'是键值对,即key——value,'('是类似于x,y,z一样的未知数,')'就是这个未知数
        #对应的值
        stack = []#列表
        for i in s:
            if i in dic:#若i 是字典中的key
                stack.append(i)#append方法:将i元素加入stack的末尾
            else:
                if len(stack) == 0:#这里就是出现了右括号而列表中无左括号时,便可以直接判负
                    return False
                                
                elif i==dic[stack[-1]]:
                    stack.pop()#将这个有对应右括号的左括号删除
                else:
                    return False#这是最后一种情况,右括号与左括号不一样'(]'
                                    
        return len(stack) == 0

你可能感兴趣的:(有效括号)