Сгруппировать слова, состоящие из одинакового набора символов.
["ток", "торс", "кот", "рост", "фывап", "Кто"]
[["ток", "кот", "Кто"], ["рост", "торс"], ["фывап"]]
- Приводит слово к нижнему регистру.
- Упорядочивает символы слова.
- Группирует слова в HashMap, где ключ - результат пунктов 1 и 2, значение - коллекция оригинальных слов с одинаковыми ключами.
Решение "в лоб".
- Преобразует слово в SortedSet символов (избегая упорядочивания всех символов слова).
- Группирует слова в дерево, где узел - одно из двух: либо HashMap дочерних узлов, либо коллекция оригинальных слов с одинаковыми ключами.
В качестве ключа HashMap использует хэш фрагмента начала строки минимальной длины, достаточной для отделения ветви. Механизм "ленивого" разбора позволяет обрабатывать только значимую часть слова и только в случае необходимости.