Distance minimale entre des sous-chaînes répétées

Java Hard strings

Tâche «Distance minimale entre des sous-chaînes répétées»

Étant donné une chaîne S composée de lettres minuscules de l'alphabet latin. Il faut trouver la distance minimale entre les indices de début de deux sous-chaînes identiques non chevauchantes de longueur L, où L est la longueur maximale possible pour laquelle de telles sous-chaînes existent. S'il n'existe pas de sous-chaînes identiques non chevauchantes de longueur L, afficher -1. La distance est la différence entre les indices de début de la deuxième et de la première sous-chaîne. Les sous-chaînes ne doivent pas se chevaucher (c'est-à-dire que leurs intervalles n'ont pas de caractères communs). Contraintes : longueur de la chaîne jusqu'à 10^5.

Format d\ entrée

Une seule chaîne S, composée de lettres minuscules de l'alphabet latin (a-z). Longueur de la chaîne de 1 à 100000.

Format de sortie

Un seul nombre entier — la distance minimale entre les indices de début de deux sous-chaînes identiques non chevauchantes de longueur maximale possible L, ou -1 si de telles sous-chaînes n'existent pas.

Exemples

Exemple 1

ENTRÉE
aababc
SORTIE
2

Exemple 2

ENTRÉE
ababa
SORTIE
2

Exemple 3

ENTRÉE
abcdefg
SORTIE
-1
main.java