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