#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param s string字符串 
# @return bool布尔型
#
#遍历字符串中的每个字符,如果字符是左括号('('、'{' 或 '['),则将其压入栈中;如果字符是右括号(')'、'}' 或 ']'),则检查栈顶元#素是否与之匹配。如果匹配,则弹出栈顶元素;如果不匹配或栈为空,则说明该字符串不是有效的括号序列。最后,如果栈为空,则说明所有的括#号都正确匹配。

class Solution:
    def isValid(self , s: str) -> bool:
        # write code here

        matching_bracket = {')': '(', '}': '{', ']': '['}
        # 初始化一个空栈
        stack = []
    
        # 遍历字符串中的每个字符
        for char in s:
        # 如果字符是左括号,则将其压入栈中
            if char in matching_bracket.values():
                stack.append(char)
        # 如果字符是右括号
            elif char in matching_bracket.keys():
            # 检查栈是否为空以及栈顶元素是否与当前右括号匹配
                if stack and stack[-1] == matching_bracket[char]:
                    stack.pop()  # 匹配则弹出栈顶元素
                else:
                    return False  # 不匹配或栈为空则返回False
    
    # 最后检查栈是否为空
        return not stack


        # list1=[]
        # for i in range(len(s)):
        #     if s[i]=='(' or s[i]=='[' or s[i]=='{':
        #         list1.append(s[i])
        #     elif s[i]==')':
        #         if list1[-1]=='(' and len(list1)>0:
        #             list1.pop()
        #         else:
        #             return False
        #     elif s[i]==']':
        #         if list1[-1]=='[' and len(list1)>0:
        #             list1.pop()
        #         else:
        #             return False
        #     elif s[i]=='}':
        #         if list1[-1]=='{' and len(list1)>0:
        #             list1.pop()
        #         else:
        #             return False
        # if len(list1)==0:
        #     return True
        # else:
        #     return False