/**************************BM算法**************************/
#include <stdio.h>
int Index_BM(char *S,char *T)
{
int i,j,k;
int S_len=strlen(S),T_len=strlen(T);
for(i=0;i<S_len;i++) //遍历S串
{
for(k=i,j=0;k<(T_len+i)&&j<T_len/2;k++,j++) //每次比较T串的两头是否和S串的两头相等,如果相等则继续往中间走
{
if(S[k]!=T[j]||S[T_len-1+i-j]!=T[T_len-1-j]) //只要有一个不相等,则跳出循环,把T串向右移动一位,即i++
break;
}
if(T_len/2==j) //T_len/2==j 表示匹配成功
break;
}
return i;
}
int main()
{
char S[255];
char T[255];
printf("请输入S串:");
gets(S);
printf("请输入T串:");
gets(T);
printf("T串在S串中的位置为:%d\n",Index_BM(S,T)+1);
return 0;
}
BM模式匹配算法
最新推荐文章于 2021-03-28 20:56:52 发布