0

友人 私は、300,000 語 (1 行あたり 1 語) を含むテキスト ファイル (2MB) にアルファベット順に並べ替えられた単語のリストを持っています。既にソートされているため、正確で大文字と小文字を区別しない必要がある文字列検索をすばやく実行したいと考えています。それを行う方法はありますか?

できるだけ早く、大文字と小文字を区別しないようにする必要があります。例えば、

ユーザーがテキスト ファイルから「MAT」という単語を検索する必要がある場合、出力は mat/MAT である必要があり、mate、matted などの単語を含めないでください。出力は最短時間で生成される必要があります。

編集 - パターン/マッチャーやバッファードリーダー/スキャナーなどのようにそれを行うには、クラスやアルゴリズムのようなソリューションが必要です.

4

2 に答える 2

1

単語リストが既にソートされている場合、私が考える最速の方法は二分探索を使用することです。大文字と小文字を区別する部分については、各文字列 (入力文字列とファイル内で比較する文字列) に ToUpper() または ToLower() を適用するだけで、問題は解決します。

私は他の人に同意しますが、これにはデータベースを使用する必要があります。

于 2013-03-27T16:02:10.083 に答える
0

あなたの最善の方法は、おそらくデータベースに適切に保存することです。これにより、最小限のデータを検索する必要があります。

例として、アルファベットごとの表で、その文字で始まる単語のみを示します。基本的に、これはすでに検索を 300,000 / 20 (26 - ごく少数の単語でいくつかのまれな文字を差し引いたもの) のように切り詰めています。

これで 300,000 語を処理できますが、そうでない場合は、さらに長さを区切ることもできます。

すべての単語をデータベースに保存するには時間がかかる場合がありますが、アプリにとっては問題にならない場合があります。

于 2013-03-27T15:57:59.773 に答える