码迷,mamicode.com
首页 > 编程语言 > 详细

KMP算法

时间:2016-05-18 10:34:20      阅读:176      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!