---
round: 3
ticket_no: 18
source_no: 9
slug: group-anagrams
topic: Hash Table
difficulty: Medium
leetcode_id: 49
attempted: true
score:
verdict:
reviewed_at:
---

# Билет 18 — Group Anagrams

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

Дан массив строк `strs`. Сгруппируйте анаграммы вместе. Можно вернуть ответ в любом порядке.

```
Input:  strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
```

Constraints: `1 <= strs.length <= 10^4`; `0 <= strs[i].length <= 100`; `strs[i]` состоит из строчных английских букв.

## Ответ

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

## Разбор

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

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

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

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

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

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

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

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

**Разбор задачи:** [`../../algo-solutions/01-must-have/02-hash-table/09-group-anagrams.md`](../../algo-solutions/01-must-have/02-hash-table/09-group-anagrams.md)
