leetcode 20.有效括号

20. 有效的括号 - 力扣(LeetCode)

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
       
        for  i in s :
            if i  in ('(','{','[' ):
                stack.append(i)
            elif i in (')' ):
                # 这种情况是 栈弹出元素为空时候 ,右半部分的括号多出来一些 比如: [()]} 
                if not stack:
                    return False
                temp=stack.pop()
                if temp !='(':
                    return False 
            elif i in('}'):
                if not stack:
                    return False
                temp=stack.pop()
                if temp !='{':
                    return False 
            elif i in(']'):
                if not stack:
                    return False
                temp=stack.pop()
                if temp !='[':
                    return False 
        if stack:  # 这种情况是,右半部分的括号全部匹配结束后, 栈元素还有剩余( 即左括号多了一部分) 
            return False
        return True       

代码随想录中的 先 强行匹配 做了映射对应关系,  然后再判断映射的右半部分 是不是 符合真实的右侧部分的信息 ,

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
       
        for  i in s :
            # if i  in ('(','{','[' ):
            #     stack.append(i)
            if i == '(':
                stack.append(')')
            elif i== '[':
                stack.append(']')
            elif i == '{':
                stack.append('}')
            # elif i in (')' ):
            #     # 这种情况是 栈弹出元素为空时候 ,右半部分的括号多出来一些 比如: [()]} 
            #     if not stack:
            #         return False
            #     temp=stack.pop()
            #     if temp !=i:
            #         return False 
            # elif i in('}'):
            #     if not stack:
            #         return False
            #     temp=stack.pop()
            #     if temp !=i:
            #         return False 
            # elif i in(']'):
            #     if not stack:
            #         return False
            #     temp=stack.pop()
            #     if temp !=i:
            #         return False 
            else:
                if not stack:
                    return False
                temp=stack.pop()
                if temp !=i:
                    return False 
        if stack:  # 这种情况是,右半部分的括号全部匹配结束后, 栈元素还有剩余( 即左括号多了一部分) 
            return False
        return True       

你可能感兴趣的:(leetcode,python,算法)