KMP算法-代码段

int SString::Index_KMP(SString S, SString T, int pos, int next[])
{
    int i, j;
    i = pos;
    j = 1;

    while (i <= S.length && j <= T.length)
    {
        if (j == 0 || S.ch[i] == T.ch[j])
        {
            i++;
            j++;
        }
        else
        {
            j = next[j];
        }
    }
    if (j > T.length)
    {
        return i - T.length;
    }
    else
    {
        return -1;
    }
}

在这里插入图片描述

void SString::get_next(SString T, int next[])
{
    int i, j;
    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];
        }
    }
}
上一篇:大数问题python解决合集(个人总结)


下一篇:oracle数据恢复—文件损坏导致Oracle数据库打开报错的数据恢复案例