アナグラムとは
〘名〙 (anagram) ことばのつづりを換えることによる遊び。単語をばらばらに崩し、全く別の単語を作る。LIVE が EVIL に、TIME が EMIT にの類。
出典: 精選版 日本国語大辞典
例えば、evilとlive, eatとteaなどがアナグラムの例として挙げられます。
与えられた配列からアナグラムをグループ分けする
いくつかの単語が格納されたリスト(strs)からアナグラムとなっている単語のグループを返す関数を作ります。
def groupingAnagram(strs):
hashMap = {} #ハッシュマップを作成
for s in strs:
key =''.join(sorted(s)) # 文字列をアルファベット順にソートする
if key not in hashMap.keys():
hashMap[key] = [s] # ハッシュマップにキーを作成
else:
hashMap[key].append(s) # 文字列sから作られたキーが既にハッシュマップにあるなら、そこにsを追加
return hashMap
strs = ["eat","tea", "evil", "live"]
print(groupingAnagram(strs))
実行
{'aet': ['eat', 'tea'], 'eilv': ['evil', 'live']}
アルファベット順に並べられた文字列をキーとして、アナグラムのグループ分けができました。
参考