Menu
CoddyTech

Group Anagrams

Дан список слов strs. Два слова являются анаграммами, если буквы одного можно переставить, чтобы получить другое, при этом каждая буква используется одинаковое число раз. Сгруппируй каждое слово со всеми его анаграммами и верни по одной строке для каждой группы: слова в ней должны быть расположены в алфавитном порядке и разделены одиночными пробелами. Упорядочь группы по алфавиту, ориентируясь на первое слово в каждой.

Повторяющееся слово указывается в своей группе дважды, а слово без анаграмм образует группу из одного слова. Алфавитный порядок означает словарный порядок: aab идёт перед ab, а ab — перед abc.

Функция

groupAnagrams(strs: string-array) → string-array
strsstring-array
слова для группировки, только строчные буквы
Возвращаетstring-array
одна строка на группу: её слова отсортированы и соединены пробелами, группы упорядочены по первому слову

Ограничения

  • 1 ≤ strs.length ≤ 4000
  • 1 ≤ strs[i].length ≤ 8
  • Каждое слово содержит только строчные английские буквы.

Примеры

Ввод
strs = ["listen", "stone", "silent", "notes", "enlist", "onset", "tones", "apple"]
Вывод
["apple", "enlist listen silent", "notes onset stone tones"]
Пояснение
enlist, listen и silent используют e, i, l, n, s и t по одному разу каждую. notes, onset, stone и tones имеют общие e, n, o, s и t. apple не совпадает ни с чем и, будучи первым словом, лидирует.
challenge icon

Дополнительный вопрос

Если слова могут содержать любые символы Unicode, какой ключ — отсортированные символы или их количество — всё ещё будет работать и что бы вы в нём изменили?

Сбросить код
def groupAnagrams(strs):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

strs = ["listen", "stone", "silent", "notes", "enlist", "onset", "tones", "apple"]

Ожидаемый вывод

["apple", "enlist listen silent", "notes onset stone tones"]