Этот вопрос проверяет умение работать со строками, базовыми алгоритмами и структурами данных, а также понимание вложенности и порядка выполнения операций.
Корректность скобок обычно проверяют с помощью стека. Мы идём по строке слева направо и кладём открывающие скобки в стек. Когда встречаем закрывающую скобку, проверяем, что в стеке есть соответствующая открывающая. Если в конце строка обработана и стек пуст — последовательность корректна.
Проверка корректности скобок — это алгоритмическая задача, цель которой определить, правильно ли открывающие и закрывающие скобки сбалансированы и вложены в строке.
Перед использованием конкретных шагов важно понимать общий принцип:
алгоритм должен учитывать порядок, тип и вложенность скобок.
Создать пустую структуру данных для хранения открывающих скобок.
Последовательно пройти по всем символам строки.
Если символ — открывающая скобка, сохранить её.
Если символ — закрывающая скобка:
Проверить, что ранее была открывающая.
Проверить, что тип скобок совпадает.
После обработки строки убедиться, что не осталось незакрытых скобок.
def is_valid_brackets(s: str) -> bool:
stack = []
pairs = {')': '(', ']': '[', '}': '{'}
for char in s:
if char in pairs.values():
stack.append(char)
elif char in pairs:
if not stack or stack.pop() != pairs[char]:
return False
return not stack
Проверка только количества скобок без учёта порядка
Отсутствие проверки на пустой стек
Игнорирование разных типов скобок
Использование стека — надёжный и простой способ проверки корректности скобочной последовательности. Такой алгоритм легко читается, работает за один проход и подходит для production-кода.