2010-12-12 4 views
0

私は辞書の種類のアプリケーションをjava.Iで作成しています。単語のドキュメントに250万語の検索リストのリストがあります。私の辞書はモバイルアプリケーションに基づいています。文字、すなわちghiで始まる単語を取得する必要があります。タイプ2の場合、ghiで始まる文字を取る必要があり、2番目の文字はabcの1つです。辞書をJavaを使用して提供する

次に、どのようなアプローチをとるべきでしょうか。 1.スペースと時間の複雑さに基づいて単語のリストを格納するためのデータ構造は何でしょうか?

2.私は15桁の数字を入力すると、すべての桁が入力された後に無差別なチェックを行うように思えるので、混乱します。

誰でも私を案内できますか?

答えて

2

さて、あなたは、対応するキー(例えば4などですべてのghiを置き換え)とのそれぞれの文字を置き換えることによって、あなたの言葉を正規化し、すべての最初の。その後、trieまたはその他のプレフィックスデータ構造を構築して、ノミナル化された表現に基づいて単語を格納します。残りは簡単です。

0

私はあなたが提示することができる数字に各世界をマップする構造を構築すべきだと思います。そのようなマッピングから地図を構築する。 List<Integer>とMultiset(Map<Integer, Set<String>>)とマッピング機能が必要です。

0

考えてみると、おそらく数字のツリーを構築できます。あなたが言ったように、それぞれの数字は3文字を表します。ツリーの各ノードは、その単語「牛」を保存するために、あなたのツリーは次のようになります、ツリー内の単一の文字を表します。

[1(abc) , 2 , 3 , 4 , 5 , 6 ...] 
    /\ 
    [... 4 , 5 , 6 (mno) , 7 ... ] 
       /\ 
     [... 7 , 8 , 9(wxyz) ] 

その最後のノードの下に、あなたは単語の牛をあげるよ、と同じ文字列( 'any'、 'bow'、 'box'など)で作成できる他の単語。次に、ユーザーが '169'を入力すると、そのノードにあるすべてのツリー文字の単語と、選択されたノードの下のサブノードによって検出される長い単語が表示されます。

関連する問題