标签:
题目:
两行字符串,求第一行字符串在第二行中出现的次数。
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++; }
标签:
原文地址:http://www.cnblogs.com/bounceFront/p/5504078.html