首页 > 编程语言 > 详细

KMP算法

时间:2016-05-18 10:32:19      阅读:171      评论:0      收藏:0      [点我收藏+]

题目:

两行字符串,求第一行字符串在第二行中出现的次数。

 

KMP算法的关键是NEXT的数组。

初始设置NEXT[0]=-1;

循环:设置NEXT的数组。

初始时NEXT[0]=-1;

if(pattern[i]==pattern[j]) 则同时设置next[++i]=++j;

否则的话:j=next[j] 

  while(i<len)
        {
            if(j==-1 || pattern[i]==pattern[j])
                NEXT[++i]=++j;
            else
                j=NEXT[j];
        }

同时对pre进行,算法就是相匹配,如果出现了不匹配的那以为,则q=next[q],q是相对于pattern串而言。最后输入ans.

while(i<len)
        {
            if(j==-1 || pre[i]==pattern[j])
            {
                ++i;++j;
            }
            else
            {
                j=NEXT[j];
            }
            if(j==n) ans++;
       }

KMP算法

原文:http://www.cnblogs.com/bounceFront/p/5504078.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!