一:一般的模式匹配算法
第一趟 a b a b c a b c a c b a b
a b c a c
第二趟 a b a b c a b c a c b a b
a b c a c
第三趟 a b a b c a b c a c b a b
a b c a c
第四趟 a b a b c a b c a c b a b
a b c a c
第五趟 a b a b c a b c a c b a b
a b c a c
第五趟 a b a b c a b c a c b a b
a b c a c
算法描述:(必定要用二次循环,因为每比一次要用for循环一 次,二需要比较多次,所以必定要用二个 for嵌套循环)
设串A、B分别用数组aa[100]与数组bb[100]存储
第一种描述方法:
for(int i=0;i<n;i++)
{
if(aa[i]==bb[0])
{
k=i;
for(int j=0;j<m;i++;j++)
{ if(aa[k]!=bb[j]) break;
}
if(j==m) printf("is found in aa")
}
第二种描述方法:
int Normal(int pos)
{
int i,j;
i=pos;j=0;
while(s[i]!=0&&j<length)
{
if(s[i]==t[j]){i++;j++;}
else{i=i-j+1;j=0;}
}
if(j==length)
return i-length;
else
return -1;
}
二:改进的模式匹配算法(KMP算法)