内の文字列のすべての出現箇所の行番号を見つける:私は次のことを行い関数を記述しようとしているテキストファイル
テキストファイルを考えると、私は特定の文字列のすべての出現箇所を検索しますこのファイル;各出現について、それが見つかった行をリストに追加する必要があります。各行にはたかだか1つしか存在しないと仮定します。テキストファイルは非常に大きくなる可能性があります。つまり、単純なfor-loopで各行を繰り返し処理することができます。ファイルは遅すぎます。
例えば、我々はコンテンツのファイルを持っていると言う:
- ABCDEFG
- HJKLMNO
- GFEDCBA
- PQRSTUV
私が "A" で検索した場合関数は1行目と3行目でそれを見つけ、1と3をリストに追加してからリストを返します。
私はバイナリ検索を検討していましたが、リストをソートする必要があると思われ、要素が区別される必要があります - 私は同じ値を探しています。
私の関数の基底となる検索アルゴリズムは、バイナリ検索とほぼ同じですか?
ありがとうございます!
すべての行の長さは同じですか? – Ryan
探している文字列がどこの行にあっても構いません。特定の行にアクセスする前に、それがどの行にもないことを確認するにはどうしますか?言い換えれば、O(n)より良い何かを想像してください(forループ) –
このファイルの大きさはどれくらいですか? @Runeが指摘しているように、ファイルを前処理してすべての単語のインデックスを維持しない限り、O(n)よりもうまくいくわけではありません。 –