すべての兄弟によると、どのように対処する単語単語のアイデアを見つけます

問題:ワードbはワード交換の文字を順次添加することによって得ることができれば単語所与は、Bの定義は、互いに兄弟とdabbsワードabbsd例えば単語の単語の兄弟です。さて、辞書与えられ、ユーザーはどのような単語どの単語兄弟を見つけるために辞書によると、単語を入力しますか?それは時間とできるだけ高いスペース効率を必要とします。

解決策1:

リストをHash_mapして使用しています。 

ワード兄弟が同じキーを持って、ない兄の言葉は異なる鍵を持っているように、まず、キーを定義します。例えば、単語がアルファベット順にキーとして大後に小規模から並べ替え、そんなに悪いABDへの鍵は、優れたキーdgooです。 

キーのキー単語、開始アドレスリストの値をhash_map、すべての兄弟つなぎ合わせた単語のリストを使用してください。 

辞書を横断することにより開始し、各単語は、それらのリストに従ってキーに追加されます。あなたが唯一の単語キーを打つために、単語の兄弟を見つける必要がある場合は、それに対応するリストができ見つけることhash_map。 

このようにhash_map時間複雑さを作成O(N)であり、ワード兄弟時間複雑さを探しているときには、O(1)です。

 

対処方法2:

そしてまた、hash_mapリストを使用。

各文字が素数に対応し、その値を乗じた対応素数はハッシュを取得してみましょう、この言葉の値が同じの兄弟であり、異なる単語の数は、製品の品質は確かに異なる位相です。

兄弟は、すべての単語をつなぎ合わせ、乗算相のためのキーワードのhash_map素数、開始アドレスリストの値をリストにリンク。

ユーザーが入力した単語について計算して、ハッシュを見つけ、リストはすべての兄弟が出力ワードをトラバース取得します。

このようにhash_map時間複雑さを作成O(N)であり、ワード兄弟時間複雑さを探しているときには、O(1)です。

おすすめ

転載: www.cnblogs.com/wyf-love-dch/p/11535955.html