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 ни с чем не совпадает. Если упорядочить группы по первому слову, получится apple, enlist, notes.

lock icon+15 скрытых тестов при отправке

challenge icon

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

Предположим, что слова могут содержать любые символы Unicode, а не только 26 строчных букв. Какой из двух ключей — отсортированные буквы или количество букв — по-прежнему будет работать и что бы вы в нём изменили?

Сбросить код
def groupAnagrams(strs):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

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

Ожидается

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