私の友人はインタビューでこの問題に出くわしました。いくつかの文を含むファイルが与えられます。文には 0-9、az、AZ、ピリオド (.) しかありません。ファイルを読み取って、クエリが高速になるように保存する必要があります。このフェーズにかかる時間は問題ではありません。ここで、クエリはいくつかの単語で構成され、これらすべての単語を含む最小の部分文字列を返す必要があります。順序は重要ではありません。(注:ファイル全体がメインメモリに収まると仮定)
たとえば、ファイルが「Ram はコンピュータ サイエンスの学位を取得していました。Ram は自宅にコンピュータを持っています。Ram は現在自宅にいます。」
クエリ 1 :"Ram computer a" 出力: "Ram has a computer" クエリ 2: "Ram home" 応答: "home.Ram"
各ノードが単語で構成されるリンクリストとしてファイルを保存することを考えました。が最後の単語の場合、単語 + フルストップがノードに格納されます。クエリ時に、LL をトラバースして、すべての単語を含む最小の文字列を見つける必要があります。
どうすればさらに最適化できますか? より良い方法でファイルを保存できますか?