Balanced Brackets

  • + 1 comment

    Python:

    def isBalanced(s):
        left, right = ["(", "{", "["], [")", "}", "]"]
        stack = []
        for char in s:
            # add opening brackets to the stack
            if char in left:
                stack.append(char)
            # if it's a right bracket:
            else:       
                # closing bracket appears without an opening bracket
                if not stack:
                    return "NO"     
                # check the last opening bracket in the stack
                idx = right.index(char) 
                if stack.pop() == left[idx]:    # remove last bracket in-place
                    continue
                return "NO"    # closing bracket didn't find an opening match
        return "NO" if stack else "YES"     # "YES" if stack is empty