- 博客(3)
- 收藏
- 关注
转载 KMP算法的前缀next数组最通俗的解释,如果看不懂我也没辙了
我们在一个母字符串中查找一个子字符串有很多方法。KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度。 当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容。 在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况
2013-10-18 16:55:28 1027
原创 KMP算法(改进版)
/*改进版KMP算法——改进求next数组的算法*/ //改进的求next数组算法 void GetNextval(SqString t,int nextval[]) { int j=0,k=-1; nextval[0]=-1; while(k<t.len) { if(k==-1 || t.ch[j]==t.ch[k]) { k++;j++; //改进的地方 if
2013-10-14 16:49:31 2973 1
原创 KMP算法
/* KMP算法中求next数组的算法和KMP算法 */ void GetNext(SqString t,int next[])//由模式串t求出next值 { int j,k; j=0;k=-1;next[0]=-1; while(j<t.len-1) { if(k==-1||t.ch[j]==t.ch[k])//k为-1或比较的字符相等时 { j++;k++; ne
2013-10-14 16:10:01 752
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人