首页 > 试题广场 >

已知模式串的 next 数组,使用 KMP

[单选题]

已知模式串的 next 数组,使用 KMP 算法进行串匹配,以下空格应填入的语句是( )。


int Index_KMP(SString S, SString T, int pos) {

    // 利用模式串 T 的 next 函数求 T 在主串 S 中第 pos 个字符之后的位置的
    // KMP 算法。其中, T 非空, 1 ≤ pos ≤ StrLength(S) 。

    int next[255];

    int i = pos;

    int j = 1;

    get_next(T, next);

    while (i <= S[0] && j <= T[0]) {

        if (j == 0 || S[i] == T[j]) { // 继续比较后继字符

            ++i; ++j;

        } else 
            ______; // 模式串向右移动

    }

    if (j > T[0]) return i-T[0]; // 匹配成功

    else return 0;

} // Index_KMP


  • j = next[j]
  • i = next[j]
  • j = i + 1
  • i = j + 1
注释说模式串移动。。移动的肯定是j啊
发表于 2018-04-19 19:18:43 回复(5)
注意if,else语句块,判断的都是j
发表于 2022-07-23 23:28:46 回复(0)
我还是没找到空格在哪
发表于 2022-01-16 16:13:31 回复(1)
等学过之后重做吧
发表于 2019-03-28 21:34:30 回复(7)
S[0]和T[0]分别存储S和T的长度
发表于 2023-02-25 09:22:12 回复(0)
请背下来
发表于 2020-04-29 22:07:05 回复(0)
while里面的循环没问题???
发表于 2019-06-25 12:23:30 回复(1)
手机上找半天才看见else后面有条&quot;那么长&quot;的横线。。。
编辑于 2018-03-23 13:23:11 回复(3)