Используйте стек открывающих скобок: каждая закрывающая должна совпасть с последней открытой. В конце стек обязан быть пустым.
Валидация корректности скобочной строки
Используйте стек открывающих скобок: каждая закрывающая должна совпасть с последней открытой. В конце стек обязан быть пустым.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дана строка, состоящая исключительно из символов '(', ')', '{', '}', '[' и ']'. Необходимо проверить, образует ли она правильную скобочную последовательность. Последовательность считается правильной, когда каждая открывающая скобка имеет соответствующую закрывающую скобку того же типа и все скобки расположены в корректном порядке вложения.
Ответ
Используйте стек открывающих скобок: каждая закрывающая должна совпасть с последней открытой. В конце стек обязан быть пустым.
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) в случае большого числа открывающих скобок.