Menu
CoddyTech

Group Anagrams

単語のリスト strs が与えられます。一方の単語の文字を並べ替えたものがもう一方の単語であり、それぞれの文字が同じ回数使われているとき、2つの単語はアナグラムです。すべての単語をそれぞれのアナグラムとグループ化し、各グループにつき1つの文字列を返してください。グループ内の単語をアルファベット順に並べ、半角スペース1つでつなげます。グループは、それぞれの先頭の単語のアルファベット順に並べます。

同じ単語が複数ある場合は、そのグループ内に重複して含めます。アナグラムがない単語は、1語だけのグループになります。アルファベット順とは辞書順のことです。aab は ab より前に、ab は abc より前に来ます。

関数

groupAnagrams(strs: string-array) → string-array
strsstring-array
グループ化する単語(小文字のみ)
戻り値string-array
各グループにつき1つの文字列:その単語を並べ替えてスペースで結合し、グループは最初の単語順に並べる

制約

  • 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を1回ずつ使います。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"]