8.5 Стек

8.5.2 Правильные скобки

Условие

Дана строка из круглых, квадратных и фигурных скобок. Проверьте, является ли последовательность правильной: каждой закрывающей скобке должна соответствовать последняя ещё не закрытая открывающая скобка того же вида; после обработки строки незакрытых скобок не должно остаться.

Реализуйте собственный класс BracketStack поверх массива char вместимости 10000 с операциями добавления, извлечения и проверки пустоты. Используйте его для проверки последовательности. Готовые контейнеры для хранения стека запрещены. Саму входную строку разрешено хранить в std::string.

Ограничения

Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Язык: C++17.

Входные данные

Одна непустая строка длиной от 1 до 10000 символов. Каждый символ — один из (, ), [, ], {, }. Пробельных символов нет.

Выходные данные

Выведите YES, если скобочная последовательность правильная, иначе NO.

Примеры

Вход 1
([]){}
Ожидаемый выход
YES
Вход 2
([)]
Ожидаемый выход
NO
Вход 3
(()
Ожидаемый выход
NO

Пробный запуск

Код берётся из редактора. Запуск не создаёт посылку и не влияет на баллы.

Выберите пример или введите свои данные и нажмите «Запустить».

Текущая попытка

Отправьте решение. Этапы и результат появятся здесь автоматически.

Все попытки

Войдите, чтобы видеть свои попытки.

Редактор

Один файл до 64 КиБ · Tab / Shift+Tab — отступ · Esc — выход из редактора · черновик сохраняется для этого аккаунта, задачи и языка.