Menu
CoddyTech

Group Anagrams

Otrzymujesz listę słów strs. Dwa słowa są anagramami, gdy jedno powstaje przez przestawienie liter drugiego, przy czym każda litera występuje tyle samo razy. Zgrupuj każde słowo ze wszystkimi jego anagramami i zwróć jeden ciąg znaków dla każdej grupy: jej słowa w kolejności alfabetycznej, połączone pojedynczymi spacjami. Uporządkuj grupy alfabetycznie według ich pierwszego słowa.

Powtórzone słowo występuje w swojej grupie dwa razy, a słowo bez anagramów tworzy grupę jednoelementową. Kolejność alfabetyczna oznacza porządek słownikowy: aab występuje przed ab, a ab przed abc.

Funkcja

groupAnagrams(strs: string-array) → string-array
strsstring-array
słowa do pogrupowania, tylko małe litery
Zwracastring-array
jeden ciąg 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 składa się wyłącznie z małych liter 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 używają każdej z liter e, i, l, n, s i t dokładnie raz. notes, onset, stone i tones mają wspólne litery e, n, o, s i t. apple nie pasuje do niczego, a według pierwszego słowa prowadzi.
challenge icon

Pytanie dodatkowe

Jeśli słowa mogą zawierać dowolne znaki Unicode, który klucz — posortowane litery czy liczba wystąpień każdej litery — nadal będzie działać i co byś w nim zmienił?

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

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

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