【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 |

本文介绍了2015年计算机联考中的一道关于KMP模式匹配的真题,解释了当匹配失败时,如何根据KMP算法更新i和j的值,并给出了next数组的概念和其作用。题目要求在字符串S='abaabaabacacaabaabcc'和模式串t='abaabc'中找到失配后的重新匹配起点,答案是C. i=5, j=2。"
105855314,9547695,成都精正检测:第三方软件测试详解,"['软件测试', '质量检测', '安全评估', '第三方服务', '代码审查']
最低0.47元/天 解锁文章
5424

被折叠的 条评论
为什么被折叠?



