字符串的匹配 int index(String s1,String s2)之朴素的模式匹配(明天讨论无回溯的模式匹配之next数组的计算)...

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).

转载于:https://www.cnblogs.com/grouptwo/archive/2012/04/08/2437176.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值