kmp算法

int kmp(S,start,T,next[]){code

//s表明主串next

//t表明模式串co

//start表明开始位置return

//next[]表明next[j]tar

int i=start;

j=0;//t的起始位置

int result;//返回位置

whil(i<S.length&&j<T.length){

if(S.str[i]==T.str[j]){

	i++;

	j++;
}

else if(j==0)

i++;

else

j=next[j];//说明前j-1有相等的子串,就师下一次的比较位置

}

if(j==T.length)

result=i-T.length;

else result=-1;

return result;

}

相关文章
相关标签/搜索