以下是几种KMP类型题:
A.类型1:匹配子字符串在母串中第几个位置开始出现。
B.类型2:子串在母串中出现了几次(可以有重复的)。
eg:子串:AZA
母串:AZAZAZA
ans = 3;
C.类型3:母串中最多有几个子串。
eg:母串:aaaaa
子串:aa
ans=2, 最多2个
D.类型4:求最小循环节有几个。
eg: aabaabaabaab
最小循环节:aab
循环:4次
E.类型5:当前最小循环节中字符串的个数(不可以补字符串)。
eg:aabaabaabaab,可分为
aa (字符串长度:2,最小循环节:a,次数:2),
aabaab (字符串长度:6,最小循环节:aab,次数:2),
aabaabaab (字符串长度:9,最小循环节:aab,次数:3),
aabaabaabaab (字符串长度:12,最小循环节:aab,次数:4)
F.类型6:需要再补几个字符能构成一个类似手链那样循环相同的。
eg:abca ->2
abcde->5
aaa->0
G.类型7:给出一字符串,找出由2个或2个以上相同的子字符串组成的前缀,输出前缀长度及其相同的子字符串数。