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

Используйте стек открывающих скобок: каждая закрывающая должна совпасть с последней открытой. В конце стек обязан быть пустым.

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

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

Используйте стек открывающих скобок: каждая закрывающая должна совпасть с последней открытой. В конце стек обязан быть пустым.

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

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

Условие

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

Ответ

Используйте стек открывающих скобок: каждая закрывающая должна совпасть с последней открытой. В конце стек обязан быть пустым.

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

Пустая строка корректна, лишняя закрывающая скобка сразу даст false. Время O(n), память O(n) в случае большого числа открывающих скобок.

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

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

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

Подробнее