Eukleides project

from http://d.hatena.ne.jp/u5_h/

(文字列)単純な文字列の照合改良版

前回のアルゴリズムを少しだけ高速にしてみる。ただし計算オーダーは変わらず
改良点
・テキスト側とパターン側各々に番兵を用いる
・1文字目をループの外側に出す

これにより2番目のループ計算による無駄を少なくする。
2番目のループは文字列の照合で用いるものである。
2文字以上の照合をする確率は1/30らしい

#include
#include
#include
#define N 35
#define M 5

char text="thequickbrownfoxjumpsoverthelazydogz";
char pattern
="quick@";
int main(void)
{
int i,j,k;
char first;
first=pattern[0];
for(i=0;i<=N-M+1;i++)
{
if(text[i]==first)
{
j=1;
k=i+1;
while(text[k]==pattern[j])
{
j++;
k++;
}
if(j==M)
{
printf("探している文字は%d番目\n",i+1);
exit(0);
}
}
}
printf("no matched\n");
return 0;
}