py_bracket_validator · Python

▶ Aprender py_bracket_validator (Python) paso a paso · explicación de py_bracket_validator

Código línea a línea

Tres columnas: el código, el trozo del subject o del main que obliga a escribir esa línea, y el por qué.

py_bracket_validator.py
CódigoSubjectPor qué
def bracket_validator(s: str) -> bool:def bracket_validator(s: str) -> bool:Firma del subject. Devuelve bool, no 0/1.
pairs = {")": "(", "]": "[", "}": "{"}Allowed brackets: (), [], {}Cada cierre apunta a su apertura. Así la comprobación es una sola línea.
stack = []in the correct orderPila de aperturas pendientes. "Orden correcto" = la última abierta es la primera que debe cerrar.
for ch in s:Carácter a carácter.
if ch in "([{":every opening bracketApertura: a la pila.
stack.append(ch)Pendiente de cerrar.
elif ch in pairs:has a matching closing bracketCierre: tiene que casar con la última apertura.
if not stack or stack.pop() != pairs[ch]:in the correct orderPila vacía (cierre sin apertura) o la apertura no es la suya (([)]): inválido. El not stack va primero para no hacer pop de una lista vacía.
return FalseFalla.
return not stackevery opening bracket has a matching closing bracketAl final la pila debe estar vacía: ((()) deja una abierta → False. Y vacío da True.