Menu
CoddyTech

Group Anagrams

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

同じ単語が2回現れる場合は、そのグループにも2回含めます。アナグラムがない単語は、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はどれにも一致しません。先頭の単語で並べると、グループはapple、enlist、notesの順になります。

lock icon提出時に隠しテスト+15件

challenge icon

発展問題

単語に26個の小文字ではなく、任意のUnicode文字が含まれるとします。2つのキーのうち、ソートした文字と文字数のどちらが引き続き機能しますか。また、どのように変更しますか?

コードをリセット
def groupAnagrams(strs):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

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

期待値

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