Дек (deque)
Двусторонняя очередь: добавление и снятие с обоих концов за O(1).
1function isPalindrome(s: string): boolean {2 const deque: string[] = s.split('')3 4 while (deque.length > 1) {5 if (deque.shift() !== deque.pop()) return false6 }7 8 return true9}Проблема
Двусторонняя очередь: добавление и снятие с обоих концов за O(1).
Что вы видите
Строка-палиндром: указатели L и R снимают пары с краёв до середины.
Как это работает
Дек объединяет стек и очередь: push/pop работают с обоих концов. Проверка палиндрома — каноническая демо-задача: пока края совпадают, снимаем пару.
Пошаговый разбор
- 01
Снятие пары
popLeft + popRight, сравнение.
- 02
Сужение
Дек уменьшается с двух сторон.
- 03
Финал
Пусто или один символ — палиндром.
Complexity и ограничения
См. complexity в шапке страницы.
Edge cases
- Пустой вход
Корректно завершается без лишних шагов.
- Вырожденный случай
Минимум работы — сразу ответ.
Где встречается в реальности
Продукт
Классический приём в реальных системах.
Собеседования
Стандартный вопрос на понимание структуры.
«Снять с двух концов сразу: палиндром за n/2 пар»
Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.
Shorts 9:16
Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.