0

「文字のセットに対して可能なすべての単語を見つける」問題を解決しようとしています。そこにはいくつかの良い答えがありますが、それでも私はそれを理解することができません。

最初のテストでは、辞書全体を配列に入れてから、各文字をループしました。これは超高速ですが、辞書を配列にロードするのに永遠に時間がかかり、大量のメモリを必要とします。

だから私は辞書(750,000)を保存する必要があります文字はSQLデータベースです。

考えられるすべての単語を見つけるには、2つの解決策があると思います。

  1. 可能なすべての単語を返す事前クエリを作成します
  2. 可能性のある単語を含むデータベースの一部を返す単純なクエリを作成し、その配列をすばやくループして単語を検証します。

問題は?: それは超高速でなければなりません。iPhone 4は、ゲームの妨げにならないように、5〜6秒以内にすべての可能な単語を取得できる必要があります。

同様の質問があります: IOS:Sqlite。記録をすばやく見つける

スルタンの答えは良い考えのようです。ハッシュテーブルを作成してから、次のようにします。

ASCII文字のビットマスク(非ASCIIアルファベットは無視)。位置0のビットは、単語に「a」が含まれ、位置1に「b」が含まれることを意味します。文字に同じビットマスクを作成すると、(wordMask&〜lettersMask)==0などの単語を選択できます。

ビットマスク、ハッシュテーブルをどのように作成し、SQLクエリをどのように構築しますか?

ありがとう

4

1 に答える 1

2

sql はおそらく最良の選択肢ではありません。単語のコレクションを格納するための従来のデータ構造は、Trieと呼ばれます。あなたが見つけることができる実装がそこにあると確信しています。他の誰かがそれに対する答えを持っているでしょう。

私が想定しているアルゴリズムは、与えられた文字を並べ替え、各並べ替えをチェックしてトライに含まれているかどうかを確認することです。

于 2013-03-13T17:05:58.230 に答える