软件实现——第二组

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

t=t0t1t2t3 ..tn-1

p=p0p1p2 ..pm-1

其中1<m<=n      (m<<n)

 

index(String s1,String s2)

其功能为如果串s2是s1的字串,则可求串s2 在串s1种第一次出现的位置

朴素的模式匹配 又称蛮力算法:用p中的字符一次与t中的字符比较直到出现相同或匹配失败 结束

算法

int index(PSeqString t,PSeqString p)
{
  int i,j;
  i=0;j=0;
whiel(i<p->n&&j<t->n)//反复比较
     {
          if(p->c[i]==t->c[j])//f(p->c[i]表示pi,t->c[j] 表示ti
         {
              i++;j++;

          }else{
            j=j-i+1;//主串,字串的i,j 值回溯,重新开始下一次匹配
           i=0;
          }

if(i<=p->n){return(j-p->n+1);}//匹配成功,返回P中第一个字符在t中的序号
else{return 0;} //失败
      }//end while

}//end main

 算法的时间效率为O(m*n).

posted on 2012-04-08 00:11  软件实现——第二组  阅读(538)  评论(0编辑  收藏  举报