最小距离在重复子串之间

Java Hard strings

任务 «最小距离在重复子串之间»

给定一个由小写拉丁字母组成的字符串 S,需要找到两个相同且不重叠的长度为 L 的子串的起始索引之间的最小距离,其中 L 是存在这样的子串的最大可能长度。如果不存在长度为 L 的相同且不重叠的子串,则输出 -1。距离是指第二个子串与第一个子串的起始索引之差。子串不得重叠(即它们的区间不能有公共字符)。限制条件:字符串长度不超过 10^5。

输入格式

<p>给定一个由小写拉丁字母 (a-z) 组成的字符串 S。字符串长度在 1 到 100000 之间。</p>

输出格式

一个整数——两个长度最大为L的相同且不重叠的子串的起始索引之间的最小距离,如果不存在这样的子串,则输出-1。

示例

示例 1

输入
aababc
输出
2

示例 2

输入
ababa
输出
2

示例 3

输入
abcdefg
输出
-1
main.java