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;

}

相關文章
相關標籤/搜索