文字列配列を指定すると、アナグラムである文字列のすべてのグループが返されます。
私の解決策:
配列内の文字列の単語ごとに、O(m lg m) に並べ替えます。m は単語の平均の長さです。
ハッシュ テーブル < string, list > を作成します。
ソートされた単語をキーとしてハッシュ テーブルに入れ、単語のすべての順列 (O(m!)) も生成し、辞書にある場合は、O(m) を使用して辞書 (プレフィックス ツリー マップ) 内の各順列を検索します。 、 (O(1)) をハッシュ テーブルに入れ、並べ替えられたすべての単語が同じキーでリストに入れられるようにします。
全体で、O(n * m * lg m * m!) 時間と O(n* m!) space 、n は指定された配列のサイズです。
m が非常に大きい場合、効率的ではありません、m! .
より良い解決策はありますか?
ありがとう