# Title: Balanced brackets
# Heading: Python Program to Check Balanced Parentheses
# Level: beginner
# Tags: balanced brackets, balanced parentheses, valid parentheses, stack
# Time: O(n)
# Space: O(n)
# About: Checks whether every bracket in a string is closed in the right order, using a list as a stack of the brackets still open.

def is_balanced(text):
    """True if every bracket closes in the right order."""
    pairs = {")": "(", "]": "[", "}": "{"}
    stack = []
    for char in text:
        if char in "([{":
            stack.append(char)
        elif char in pairs:
            # It has to close the last bracket still open
            if not stack or stack.pop() != pairs[char]:
                return False
    return not stack  # True only if nothing is left open


print("{[()()]}:", is_balanced("{[()()]}"))
print("([)]:", is_balanced("([)]"))
