Menu
CoddyTech

Group Anagrams

Otrzymujesz listę słów strs. Dwa słowa są anagramami, gdy jedno jest przestawieniem liter drugiego: zawierają te same litery, każdą użytą tyle samo razy. Umieść każde słowo w grupie zawierającej wszystkie jego anagramy i zwróć jeden ciąg znaków dla każdej grupy: słowa z grupy w kolejności alfabetycznej, połączone pojedynczymi spacjami. Uporządkuj grupy alfabetycznie według ich pierwszego słowa.

Słowo, które występuje dwa razy, jest wymienione w swojej grupie dwa razy, a słowo bez anagramów tworzy jednoelementową grupę. Kolejność alfabetyczna oznacza kolejność słownikową: aab występuje przed ab, a ab przed abc.

Funkcja

groupAnagrams(strs: string-array) → string-array
strsstring-array
słowa do pogrupowania, wyłącznie małe litery
Zwracastring-array
jeden ciąg znaków na grupę: jego słowa posortowane i połączone spacjami, grupy uporządkowane według pierwszego słowa

Ograniczenia

  • 1 ≤ strs.length ≤ 4000
  • 1 ≤ strs[i].length ≤ 8
  • Każde słowo zawiera wyłącznie małe litery alfabetu angielskiego.

Przykłady

Wejście
strs = ["listen", "stone", "silent", "notes", "enlist", "onset", "tones", "apple"]
Wyjście
["apple", "enlist listen silent", "notes onset stone tones"]
Wyjaśnienie
enlist, listen i silent zawierają po jednym wystąpieniu liter e, i, l, n, s i t. notes, onset, stone i tones zawierają litery e, n, o, s i t, a apple do niczego nie pasuje. Według pierwszego słowa grupy to apple, enlist, notes.

lock icon+15 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Załóżmy, że słowa mogą zawierać dowolne znaki Unicode, a nie tylko 26 małych liter. Który z tych dwóch kluczy — posortowane litery czy liczba wystąpień poszczególnych liter — nadal działa i co należałoby w nim zmienić?

Zresetuj kod
def groupAnagrams(strs):
    # Wpisz tutaj kod
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

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