【2015年计算机联考真题】
已知字符串S="abaabaabacacaabaabcc",模式串t="abaabc"。采用KMP算法进行匹配,第一次出现失配(s[i] ≠ t[j])时,
i=j=5,则下次开始匹配时,i,j的值分别是()
A. i=1,j=0
B. i=5,j=0
C. i=5,j=2
D. i=6,j=2
【答案】 C
【解析】
KMP算法主要是求next数组的过程,首先要理解next数组是啥
next[i] 代表什么:next[i] 代表在模式串t中 长度为i的 前缀后缀匹配长度。
根据next数组生成算法可得
字符串下标 | 0 | 1 | 2 | 3 | 4 | 5 | |
字符串t | a | b | a | a | b | c | |
next | 0 | 0 | 0 | 1 | 1 | 2 | 0 |
next数组下标(j) | 0 | 1 | 2 | 3 | 4 | 5 | 6 |