class Solution:
    def isValid(self , s: str) -> bool:
        # write code here
        def get_id(c):
            if c == "[":
                return 1
            elif c == "(":
                return 2
            elif c == "{":
                return 3
            elif c == "}":
                return 4
            elif c == ")":
                return 5
            elif c == "]":
                return 6
            else:
                return 0

        stack = []
        flag = True

        for c in s:
            n = get_id(c)
            if n >= 4:
                if not stack or stack[-1] + n != 7:
                    flag = False
                    break
                else:
                    stack.pop()
            elif n >= 1:
                stack.append(n)
        
        return flag and not stack