串的——模式匹配算法

来源:互联网 发布:海岛奇兵极品神像数据 编辑:程序博客网 时间:2024/05/17 15:38

一:一般的模式匹配算法
第一趟 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   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算法)

原创粉丝点击