2 つの単語のうちの 1 つが別の単語とまったく同じ文字を持っている場合、2 つの単語はアナグラムです。
例 : Anagram
&Nagaram
はアナグラムです (大文字と小文字を区別しません)。
現在、これに似た多くの質問があります。2 つの文字列がアナグラムであるかどうかを調べるには、次の 2 つの方法があります。
1) Sort
文字列を比較します。
2)これらの文字列の を作成し、frequency map
それらが同じかどうかを確認します。
しかし、この場合 、単語が与えられ (簡単にするために、単一の単語のみを想定し、単一の単語のアナグラムのみを持つことにします)、そのためのアナグラムを見つける必要があります。
私が念頭に置いている解決策は、単語のすべての順列を生成し、これらの単語のどれが辞書に存在するかを確認できるということ です。しかし明らかに、これは非常に非効率的です。はい、辞書もご利用いただけます。
では、ここにはどのような選択肢がありますか?
私はまた、何かを使用して何かを行うことができるという同様のスレッドを読みましたTries
が、その人は、アルゴリズムが何であるか、なぜ最初にTrieを使用したのかについて説明しませんでした.PythonまたはRubyでも実装が提供されただけです. それはあまり役に立たなかったので、この新しいスレッドを作成しました。実装 (C、C++、または Java 以外) を共有したい場合は、それについても説明してください。