已知字符串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
模式匹配(KMP)算法对普通的暴力匹配的改进在于:每当匹配过程中匹配失败时,主串(本题为S)的指针(i)不需要回溯,而是利用已经得到的“部分匹配”的结果将模式串(t)向右“滑动”尽可能远的一段距离后,继续进行比较。模式串“滑动”的距离是由模式串(t)本身决定的,即t的子串t[0…j-1]中前缀串和后缀串相等的最长长度。本题中第一次失配i=5,字串为“abaab”,其相等且最长的前后缀为“ab”,一次下一个j=2。
解答:
第一次出现&ldqu...
登录后提交答案