【模板】【字串】KMP演算法

蒟蒻炸雞發表於2017-02-23

【模板】字串匹配的基礎演算法KMP 時間複雜度O(m+n)

int kmp(char s1[105],char s2[105]){
    int i=0,j=next[0]=-1;
    int len1=strlen(s1),len2=strlen(s2);
    while (i<len2-1){
        if (j<0 || s2[i]==s2[j])
            next[++i]=++j;
        else
            j=next[j];
    }

    i=0,j=0;
    while (i<len1 && j<len2){
        if (j<0 || s1[i]==s2[j]) i++,j++;
        else j=next[j];
    }

    if (j==len2) return i-j;
    return -1;
}

相關文章