class Solution:
    def isValid(self, s: str) -> bool:
        # 定义一个字典用于匹配左右括号
        bracket_map = {')': '(', '}': '{', ']': '['}
        # 初始化一个空栈
        stack = []
        
        # 遍历字符串
        for char in s:
            # 如果是左括号,压入栈中
            if char in bracket_map.values():
                stack.append(char)
            # 如果是右括号
            elif char in bracket_map:
                # 检查栈是否为空或者栈顶的左括号是否与当前右括号匹配
                if not stack or stack[-1] != bracket_map[char]:
                    return False  # 不匹配,返回False
                stack.pop()  # 匹配,弹出栈顶元素
            else:
                # 遇到非括号字符,根据题目描述这实际上不应出现,但这里可选择忽略或处理
                continue  # 或者是 return False,具体看题目要求是否允许非括号字符
        
        # 遍历结束后,如果栈为空,说明所有括号都已正确闭合
        return not stack