传送门:题目
题意:
给一个字符串,找到它的最短循环节,比如说ababab,那么最短循环节是ab,然后题目说有的循环节是残缺的,让我们求残缺部分的长度,比如说abcdab,循环节是abcd,然后ab部分残缺,残缺部分长度为2,我们输出2。注意:循环节至少有两个,比如说abcde,我们要输出5,补一个完整的循环节。
题解:
扩展KMP中的next可以帮助我们找到最短循环节,我们知道next的值代表当前前缀的上一个索引位置,对这句话不理解的可以参考这篇博客:KMP的next数据的含义
知道next数组的含义了,我们可以看下这个例子。
index | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
str | a | b | a | b |