py_bracket_validator

Código comentado línea a línea y paso a paso:

Entregas: py_bracket_validator.py con bracket_validator(s). Rank 03 · nivel 1.

Qué pide (en palabras normales)

Subject (enunciado original)
Write a function that checks if the brackets in a string are valid.

A string is valid if every opening bracket has a matching closing bracket
in the correct order.

Allowed brackets: (), [], {}

Expected file: py_bracket_validator.py
Function signature:
def bracket_validator(s: str) -> bool:

Examples:
bracket_validator("()")
=> True
bracket_validator("()[]{}")
=> True
bracket_validator("(]")
=> False
bracket_validator("([)]")
=> False
bracket_validator("{[]}")
=> True
bracket_validator("hello(world)")
=> True
bracket_validator("((())")
=> False
bracket_validator("")
=> True

La idea: una pila

pairs = {")": "(", "]": "[", "}": "{"}
stack = []
for ch in s:
    if ch in "([{":
        stack.append(ch)
    elif ch in pairs:
        if not stack or stack.pop() != pairs[ch]:
            return False
return not stack

Abro → apilo. Cierro → desapilo y compruebo que sea la pareja. Al final no puede quedar nada abierto. Tres casos de fallo y los cubre todo: cierre sin apertura ()), pareja cruzada (([)]) y apertura sin cierre (((())).

Trampas