次の機能を備えた辞書実装用の C/C++ コードを作成する必要があります。
単語には基本的に (1 つ以上の) 定義があります。
1) 挿入
2) 検索 (できるだけ速く)
3) オートコンプリート
4) 自動修正
5) スペルチェック
だから私はそうする方法を知る必要がありますか?
最も効率的なデータ構造はどれですか? テーブルまたは何か他のものを試すか、ハッシュする
どの検索手法を使用するか...
オートコンプリートとスペルチェックを効果的に実装する方法..?
次の機能を備えた辞書実装用の C/C++ コードを作成する必要があります。
単語には基本的に (1 つ以上の) 定義があります。
1) 挿入
2) 検索 (できるだけ速く)
3) オートコンプリート
4) 自動修正
5) スペルチェック
だから私はそうする方法を知る必要がありますか?
最も効率的なデータ構造はどれですか? テーブルまたは何か他のものを試すか、ハッシュする
どの検索手法を使用するか...
オートコンプリートとスペルチェックを効果的に実装する方法..?
通常は、 BK ツリーなど、互いに編集距離に従って配置された単語のツリーを使用します。
IIRC のアイデアは、編集距離に従って番号が付けられたエッジを介してリンクされた各単語を持つバランスの取れたツリーを持つことです。単語の最も近い一致を見つけたい場合は、ルート単語までの編集距離を計算し、同じ番号のルート単語のリンクをたどり、同じ単語であるリーフノードに到達するまでプロセスを繰り返します。または最も近い一致。
編集:後から考えると、私がリンクしたその記事は、私が行ったよりもはるかにうまく説明しています。アプローチの適切な説明のために、それを一読することをお勧めします。
確かに、単語のリストを含むデータベースが必要です。次に、テキストを単語に分割して、それらがデータベースに存在するかどうかを確認する必要があります。
オートコンプリートの場合、これまでに入力されたテキストが、AJAX呼び出しで実装された辞書内の単語と一致することを確認できます(LIKE txt +'%'句を使用)。