字符串的操作有许多,其中定位子字符串在主串中的起始位置,是常用操作。而KMP则是此操作的常用优化算法

 

 

 

 上述图示为算法思想,适合人工计算,但电脑的效率较低,以下贴出代码:

//求next数组,T为主串
void getNext(String T,int[] next){
    int i = 1,j = 0;
    next[1] = 0;
    while(i < T.length()){
        if(j== 0 || T.ch[i] == T.ch[j]){
            ++i;++j;next[i] = j;
    }  
    else
        j = next[j]
    return;
}

 

posted on 2020-05-20 19:03  此夜望月  阅读(129)  评论(0编辑  收藏  举报