---
round: 1
ticket_no: 8
source_no: 5
slug: find-all-anagrams-in-a-string
topic: Hash Table
difficulty: Medium
leetcode_id: 438
attempted: true
score: 2
verdict: partial
reviewed_at: 2026-09-12
---

# Билет 08 — Find All Anagrams in a String

## Условие (как предъявлено)

Даны две строки `s` и `p`. Нужно вернуть все начальные индексы подстрок строки `s`, которые являются анаграммами строки `p`. Порядок ответа не важен.

```
Input:  s = "cbaebabacd", p = "abc"  →  [0,6]
Input:  s = "abab", p = "ab"         →  [0,1,2]
```

Constraints: `1 <= length <= 3*10^4`, строка состоит из строчных английских букв.

## Ответ

> Значит, здесь у нас появляется такое скользящее окно — наверное, так вот зовём — которое равно как раз вот этой подстроке по длине. То есть у нас есть П, оно длиной 3, и вот мы таким окном двигаемся. То есть для первого окна мы посчитали хэш вхождение каждого символа и сколько раз он встречается и сравниваем. У нас должен быть посчитан хэш такой же по нашей подстроке. Если они равны, значит, начальный индекс нам подходит. Всё, мы его записываем в результат. И дальше, когда мы сдвигаем это окно, нам нужно выкинуть начальный элемент. Получается, мы вычитаем его и добавляем новый символ в этот хэш. Вё, у нас дешёвое сравнение появляется.

## Разбор

**Что верно:** окно фиксированной длины |p|, частотные счётчики, сравнение с эталоном и инкрементальное обновление при сдвиге — верно.

**Что упущено и ошибки:** не названа сложность (сравнение двух массивов на 26 букв даёт O(26n) = O(n)); не уточнено, что «хэш» здесь — детерминированный массив частот, а не хеш-функция; граничные случаи: |p| > |s| → [], |p| = 1.

**Эталонная идея:** массив из 26 счётчиков для p, скользящее окно по s, на каждом шаге сравнение массивов; при совпадении пишем window_start.

**Сложность:** время O(n) (n = |s|), память O(1)

**Критерии:** идея ✅ · структура данных ✅ · сложность ❌ · граничные случаи ⚠️


**Разбор задачи:** [`../../algo-solutions/01-must-have/02-hash-table/05-find-all-anagrams-in-a-string.md`](../../algo-solutions/01-must-have/02-hash-table/05-find-all-anagrams-in-a-string.md)
