int KMP_Index(){
int i = 0, j = 0,ans=0;//ans=-1;
getNext();
while(i < slen){ if(j == -1 || S[i] == T[j]){ i++; j++; }else j = nextt[j]; if(j == tlen){ //ans++,j=0;//语句1 //ans++,j=nextt[j];//语句2 //ans=i-j+1;break;//语句3 } } return ans; }

对于这段代码,若求第一次出现位次,将ans置为-1(为了区分第0位与无),打开语句3;
求可部分重叠KMP则打开语句2;
求不可重叠KMP则打开语句1.

发表评论

邮箱地址不会被公开。 必填项已用*标注