タイトルが示すように、私は特定のテキスト (この場合はモビー ディック) をキーワードとして検索するプロジェクトに取り組んでいます。ただし、単語が線形である代わりに、スキップ距離を介して検索しようとしています (cat の代わりに、c---a---t を探します)。
私は複数の方法を試しましたが、実際に1つのスキップ距離を終了し、機能せず、次の許可された距離を呼び出すことができないようです(事前設定された制限に達するまで1ずつ増加します)
以下は、この検索が行われる現在の方法です。おそらく、これは私が見逃しているばかげたものですか?
private int[] search()
throws IOException
{
/*
tlength is the text file length,
plength is the length of the
pattern word (cat in the original post),
text[] is a character array of the text file.
*/
int i=0, j;
int match[] = new int[2];
int skipDist = 2;
while(skipDist <= 100)
{
while(i<=tlength-(plength * skipDist))
{
j=plength-1;
while(j>=0 && pattern[j]==text[i+(j * skipDist)])j--;
if (j<0)
{
match[0] = skipDist;
match[1] = i;
return match;
}
else
{
i++;
}
}
skipDist = skipDist + 1;
}
System.out.println("There was no match!");
System.exit(0);
return match;
}