この質問は単にアルゴリズムに関するものです。擬似コードでは次のようになります。
A = Array of strings; //let's say count(A) = N
S = String to find; //let's say length(S) = M
for (Index=0; Index<count(A); Index++)
if (A[Index]==S) {
print "First occurrence at index\x20"+Index;
break;
}
この for ループでは、N 回の文字列比較 (またはバイト比較 N*M 回、O(N*M)) が必要です。これは、配列 A に多数の項目がある場合、または文字列 S が長すぎる場合によくありません。
最初の出現を見つけるためのより良い方法はありますか? O(K*logK) の一部のアルゴリズムは問題ありませんが、O(K) が望ましいか、O(logK) が最適です。ここで、K は N または M のいずれかです。
他の構造を追加したり、比較ループの前にデータ処理を行ったりしてもかまいません。