Sobes.tech
Intern

20. Paréntesis válidos Dada una cadena s que contiene solo los caracteres '(', ')', '{', '}', '[' y ']', determine si la cadena de entrada es válida. Una cadena de entrada es válida si: 1. Los corchetes abiertos deben cerrarse con el mismo tipo de corchetes. 2. Los corchetes abiertos deben cerrarse en el orden correcto. 3. Cada corchete de cierre tiene un corchete abierto correspondiente del mismo tipo. Ejemplo 1: Entrada: s = "()" Salida: true Ejemplo 2: Entrada: s = "()[]{}" Salida: true Ejemplo 3: Entrada: s = "(]" Salida: false

sobes.tech AI

Respuesta de la IA

Для проверки валидности строки с скобками удобно использовать стек. Идея:

  • Проходим по символам строки.
  • Если символ — открывающая скобка, кладём её в стек.
  • Если закрывающая — проверяем, что верхний элемент стека соответствует ей по типу.
  • Если нет соответствия или стек пуст, строка невалидна.
  • В конце стек должен быть пустым.

Пример на Python:

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

# Примеры
print(isValid("()"))      # True
print(isValid("()[]{}"))  # True
print(isValid("(]"))      # False