题目
KMP算法[1]使用修正后的next数组进行模式匹配[2],模式串S= "aabaab",当主串中某字符与S中某字符失配时,S将向右滑动的最长距离是A.5B.4 C.3 D.2
KMP算法[1]使用修正后的next数组进行模式匹配[2],模式串S= "aabaab",当主串中某字符与S中某字符失配时,S将向右滑动的最长距离是
A.5
B.4
C.3
D.2
题目解答
答案
首先,我们需要计算修正后的next数组。对于模式串S中的每个字符,next数组记录的是在该字符失配时,模式串向右滑动的最长距离。
根据KMP算法修正next数组的规则,对于字符S[i],若失配,我们将模式串向右滑动的距离为next[i]。
通过计算可得到修正后的next数组为[0, 1, 0, 1, 2, 3]。
接下来,我们需要找到主串中某字符与S中某字符失配时,S需要向右滑动的最长距离。当某字符与S中的字符失配时,我们可以根据修正后的next数组来确定滑动的距离。
在这个例子中,主串中某字符与S中某字符失配时,S需要向右滑动的最长距离为next[5]。
因此,最长距离为3。
----
所以,正确答案是C选项:3
解析
步骤 1:计算修正后的next数组
对于模式串S中的每个字符,next数组记录的是在该字符失配时,模式串向右滑动的最长距离。根据KMP算法修正next数组的规则,对于字符S[i],若失配,我们将模式串向右滑动的距离为next[i]。通过计算可得到修正后的next数组为[0, 1, 0, 1, 2, 3]。
步骤 2:确定最长滑动距离
接下来,我们需要找到主串中某字符与S中某字符失配时,S需要向右滑动的最长距离。当某字符与S中的字符失配时,我们可以根据修正后的next数组来确定滑动的距离。在这个例子中,主串中某字符与S中某字符失配时,S需要向右滑动的最长距离为next[5]。
步骤 3:得出结论
因此,最长距离为3。
对于模式串S中的每个字符,next数组记录的是在该字符失配时,模式串向右滑动的最长距离。根据KMP算法修正next数组的规则,对于字符S[i],若失配,我们将模式串向右滑动的距离为next[i]。通过计算可得到修正后的next数组为[0, 1, 0, 1, 2, 3]。
步骤 2:确定最长滑动距离
接下来,我们需要找到主串中某字符与S中某字符失配时,S需要向右滑动的最长距离。当某字符与S中的字符失配时,我们可以根据修正后的next数组来确定滑动的距离。在这个例子中,主串中某字符与S中某字符失配时,S需要向右滑动的最长距离为next[5]。
步骤 3:得出结论
因此,最长距离为3。