KMP模板
模板就是你的武器, 而真正的高手, 是不需要用任何武器的
a b a a b c a c
-1 0 0 1 1 2 0 1
void getNext(const char* str,int next[]){
int i=0,j=-1;
next[i]=j;
assert(str);
while(i<(int)strlen(str)){
if(j==-1||str[i]==str[j]){
i++,j++;
next[i]=j;
}
else
j=next[j];
}
}int Index(const char* strPar,const char* str,int next[]){
int i=-1,j=-1;
assert(strPar&&str);
int m=strlen(strPar),n=strlen(str);
while(i<m&&j<n){
if(j==-1||strPar[i]==str[j])
i++,j++;
else
j=next[j];
}
if(j==strlen(str))
return i-j;
else
return -1;
}
每天早上叫醒你的不是闹钟,而是心中的梦~

浙公网安备 33010602011771号