# LeetCode 49: Group Anagrams — Step-by-Step Visual Trace

**Medium** — Hash Table | String | Sorting

## The Problem

Group anagrams together from an array of strings, where anagrams are words that contain the same characters in different orders.

## Approach

Use a hash map where the key is the sorted version of each word and the value is a list of all words that have the same sorted form. Words with identical sorted characters are anagrams and get grouped together.

**Time:** O(n * k log k) · **Space:** O(n * k)

## Code

```python
class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        anagrams_map = {}

        for word in strs:
            sorted_word = "".join(sorted(word))
            if sorted_word in anagrams_map:
                anagrams_map[sorted_word].append(word)
            else:
                anagrams_map[sorted_word] = [word]

        return list(anagrams_map.values())
```

## Watch It Run

> **[Open interactive visualization](https://tracelit.dev/app?trace=0049_group-anagrams)**

> **Try it yourself:** Open [TraceLit](https://tracelit.dev/app?trace=0049_group-anagrams) and step through every line.

---

*Built with [TraceLit](https://tracelit.dev) — the visual algorithm tracer for LeetCode practice.*
