AB3 有效括号序列

思路:

step1:创建字典,使得各个括号一一对应;创建一个空栈stack;创建一个flag;
step2:遍历s,如果i是“([{” ,则添加到stack中;如果i是“)}]”,如果stack不是空,并且stack最后一个元素对应的括号等于i,则删除stack中的i;否则flag = False;
step3:如果flag为True并且stack为空,返回True;否则返回False;

代码如下:

class Solution:
    def isValid(self , s: str) -> bool:
        d = {'(':')','[':']','{':'}'}
        stack = []
        flag = True
        for i in s:
            if i in '{[(':
                stack.append(i)
            if i in ')]}':
                if stack != [] and d[stack[-1]] == i:
                    stack.pop()
                else:
                    flag = False
        
        if flag == True and stack == []:
            return True
        return False