Верификация корректности скобочной строки

Складывайте открывающие скобки в стек. Закрывающая должна соответствовать последней открытой; после обхода стек обязан быть пустым.

Короткий ответ

Что ответить на собеседовании

Складывайте открывающие скобки в стек. Закрывающая должна соответствовать последней открытой; после обхода стек обязан быть пустым.

Подробный разбор

Ответ с пояснениями

Условие

Дана строка, состоящая исключительно из символов '(', ')', '{', '}', '[' и ']'. Необходимо проверить, образует ли она корректную скобочную последовательность. Последовательность считается корректной, если каждая открывающая скобка имеет соответствующую закрывающую скобку того же типа и все скобки закрываются в правильном порядке.

Ответ

Складывайте открывающие скобки в стек. Закрывающая должна соответствовать последней открытой; после обхода стек обязан быть пустым.

function validBrackets(text) {
  const stack = [];
  const pairs = { ')': '(', ']': '[', '}': '{' };
  for (const char of text) {
    if ('([{'.includes(char)) stack.push(char);
    else if (!(char in pairs) || stack.pop() !== pairs[char]) return false;
  }
  return stack.length === 0;
}

Одних счётчиков по типам недостаточно: строка ([)] содержит равное количество скобок, но неправильный порядок. Пустая строка корректна; неизвестные символы эта реализация отвергает. Сложность O(n) времени и O(n) памяти в худшем случае.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее