KMP算法
Posted bounce
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KMP算法相关的知识,希望对你有一定的参考价值。
题目:
两行字符串,求第一行字符串在第二行中出现的次数。
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算法的主要内容,如果未能解决你的问题,请参考以下文章