其算法复杂度为两个字符串的长度之和(m+n)。
#include#include void setnext(char t[], int next[]){ next[0]=-1; int i; for(i=1; i = 0) j = next[j]; if(t[i] == t[j+1]) next[i] = j+1; else next[i] = 0; }}int count_kmp(char s[], char t[], int next[]){ int t_size = strlen(t); setnext(t, next); int index, count = 0; for(index=0; index