Visitors hit counter dreamweaver

字符串之KMP

    没看明白时,觉得很难。 弄清楚后其实很简单。虽然说以前学了,但这么久不看了,这次再看时,花了好长时间。。。。一定要给记住了噢。

下面我只给出了代码的实现。如果想看详细的话。请移步:http://www.inf.fh-flensburg.de/lang/algorithmen/pattern/kmpen.htm 英文的。讲得很好

还有就是http://www.slyar.com/blog/kmp.html这位前辈的分析很好啊!他才比我大一届。但看了他的博客,很佩服他。向他看齐吧!

看不懂就自己去翻翻数据结构的数吧。

    关键在于get_next:

//Preprocessing algorithm
void kmpPreprocess()
{
int i=0, j=-1;
b[i]=j;
while (i<m)
{
while (j>=0 && p[i]!=p[j]) j=b[j];
i++; j++;
b[i]=j;
}
}

和 kmpsearch:

void kmpSearch()
{
int i=0, j=0;
while (i<n)
{
while (j>=0 && t[i]!=p[j]) j=b[j];
i++; j++;
if (j==m)
{
report(i-j);
j=b[j];
}
}
}



 

posted @ 2012-04-03 22:45  Jason Damon  阅读(205)  评论(0编辑  收藏  举报