编辑代码

#include <iostream>

void string::genNext(int* next){
    int len = this->getlength();
    next[0] =-1;
    next[1] = 0;
    int j =2;
    int k = 2;
    while (j<=len) {
        if(k==-1 || s[j-1]==s[k]) {
            j++;
            k++;
            if(s[j-1]==s[k]) {
                next[j-1] = next[k];
            } else{
                next[j-1] =k;
            }
        }
        else {
            k =next[k];
        }
    }
}

int main(){
    String s,ss;
    s = "bbbb";
    ss = "bbbba";
    int idx = s.index_KMP(ss);
    zout<<"index:"<<idx<<endl;
    return 0;
}