Parfois, il arrive qu'en tapant une phrase, je suis distrait et je finis par taper deux fois de suite le même couple de mots deux fois de suite.
Pour vous assurer que les autres personnes ne sont pas gênées par cela, votre tâche consiste à écrire un programme qui résout ce problème!
Tâche
Étant donné une chaîne d'entrée (si cela est important pour votre langue, vous pouvez supposer une entrée ASCII uniquement qui ne contient pas de sauts de ligne.) str
, Qui contient quelque part en son milieu une sous-chaîne qui se produit deux fois de suite immédiatement, renvoyez la chaîne avec une instance de ceci sous-chaîne supprimée.
Dans le cas de plusieurs possibilités, renvoyez la réponse la plus courte possible (c'est-à-dire, choisissez la sous-chaîne répétitive consécutive la plus longue et supprimez-la).
Dans le cas de plusieurs sous-chaînes répétitives consécutives de longueur égale, supprimez la première (c'est-à-dire la première rencontrée lors de la lecture de la chaîne d'avant en arrière).
Vous pouvez supposer que l'entrée est correcte (c'est-à-dire qu'elle contient toujours une sous-chaîne répétée consécutive), ce qui pourrait aider à la réduire.
Exemples
- Entrée:
hello hello world
-> Sortie:hello world
. - Entrée:
foofoo
-> Sortie:foo
. (Donc: oui, la chaîne peut ne se composer que de la partie répétée deux fois). - Entrée:
aaaaa
-> Sortie:,aaa
car la plus longue sous-chaîne répétée consécutive est iciaa
. - Entrée:
Slartibartfast
-> Ce n'est pas une entrée valide, car elle ne contient pas de sous-chaîne répétitive consécutive, vous n'avez donc pas besoin de gérer ce cas. - Entrée:
the few the bar
-> Ceci est une autre entrée non valide, car la partie répétitive doit suivre immédiatement la partie d'origine. Dans ce cas,the
etthe
sont séparés par quelque chose d'autre entre eux, donc cette entrée n'est pas valide. - Entrée:
ababcbc
-> Sortie:abcbc
. Les deux sous-chaînes répétitives consécutives les plus longues possibles sontab
etbc
. Commeab
on le rencontre plus tôt dans la chaîne, celle-ci est la bonne réponse. - Entrée:
Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo
. Sortie:Buffalo buffalo buffalo buffalo Buffalo buffalo
. (Le remplacement effectué doit être sensible à la casse). - Entrée:
Sometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice couple of words twice in succession.
-> Sortie:Sometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice in succession.
. Seule la plus longue sous-chaîne répétée consécutive est supprimée.
Votre code doit être aussi court que possible, car il s'agit de code-golf , donc la réponse la plus courte en octets l'emporte. Bonne chance!
p
enhappens
Sometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice couple of words twice in succession.
en entrée, la sortie doit êtreSometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice in succession.
. Seule la duplication trouvée la plus longue est supprimée.