---
round: 3
ticket_no: 27
source_no: 5
slug: find-all-anagrams-in-a-string
topic: Hash Table
difficulty: Medium
leetcode_id: 438
attempted: true
score:
verdict:
reviewed_at:
---

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

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

Даны две строки `s` и `p`. Верните массив начальных индексов всех анаграмм `p` в `s`. Порядок ответа может быть любым.

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

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

## Ответ

> Значит, для П мы сначала считаем хэш со счетчиками каждой буквы. Вот, а дальше мы берем окно размера вот этого нашего слова и тоже считаем по нему подобную же хэш. Сравниваем их. Если они совпали, мы индекс в ответ дописываем в результирующий массив. Ну и двигаем это окошко. Получается, что левая буковка мы счетчик уменьшаем, правая прибавляем, записываем результат, если хэши совпали.

## Разбор

**Что верно:**

**Что упущено и ошибки:**

**Эталонная идея:**

**Время:** O(...) — что доминирует

**Память:** O(...) дополнительная (+ O(...) на выход / стек рекурсии)

**Граничные случаи:** 1) ... 2) ... 3) ...

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

**Канон сложности:** сверить с [`../complexity-cheat-sheet.md`](../complexity-cheat-sheet.md) (таблица по 32 задачам)

**Разбор задачи:** [`../../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)
