BM模式匹配算法

来源:互联网 发布:七天网络查分登入账号 编辑:程序博客网 时间:2024/04/29 07:26
/**************************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;}

0 0
原创粉丝点击