题目:给出一些音符,求出最长的重复出现的旋转长度。
从题目中的意思可以知道,只要满足相邻的差相等便可以了,那我们建立一个相邻并非的数组,题目要求的便是求最长的重复子串长度,而且不可重叠。
由于 相邻差可能为负,则统一加上100,转变为0-200之间的数即可。
之后求出height数组,表示的是相邻后缀的最长公共前缀。
二分答案,然后进行判定
按height就可以对后缀进行分组,height如果大于长度,则我们需要判断是否重叠,通过sa的差值即可。详见代码
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include
#include