线性表 --- 串KMP(day4

在这里插入图片描述
线性表 --- 串KMP(day4_第1张图片

// s[]是长文本,p[]是模式串,n是s的长度,m是p的长度
求模式串的Next数组:
for (int i = 2, j = 0; i <= m; i ++ )
{
    while (j && p[i] != p[j + 1]) j = ne[j];
    if (p[i] == p[j + 1]) j ++ ;
    ne[i] = j;
}

// 匹配
for (int i = 1, j = 0; i <= n; i ++ )
{
    while (j && s[i] != p[j + 1]) j = ne[j];
    if (s[i] == p[j + 1]) j ++ ;
    if (j == m)
    {
        j = ne[j];
        // 匹配成功后的逻辑
    }
}

线性表 --- 串KMP(day4_第2张图片

待补

线性表 --- 串KMP(day4_第3张图片

你可能感兴趣的:(数据结构知识点,c++,算法,数据结构)