Explication
Deux chaînes peuvent être mélangées en intercalant leurs lettres pour former une nouvelle chaîne, tout comme deux piles de cartes peuvent être mélangées pour former une seule pile.
Par exemple, les chaînes HELLO
et WORLD
peuvent être mélangées pour former HWEOLRLLOD
, ou HEWORLLLDO
, ou peut-être simplement HELLOWORLD
.
Ce n'est pas un mélange si l'ordre des lettres d'origine n'est pas conservé. Par exemple, le D
in WORLD
ne peut jamais apparaître avant le R
après avoir été mélangé. Cela signifie que EHLLOWRDLO
, par exemple, n'est pas un mélange de HELLO
et WORLD
, même s'il contient toutes les lettres originales.
Une chaîne est un mélange de jumeaux si elle peut être formée en mélangeant deux chaînes identiques. Par exemple, ABACBDECDE
est un mélange de jumeaux car il peut être formé par mélange ABCDE
et ABCDE
. DBEACBCADE
n'est pas un mélange de jumeaux car il ne peut pas être formé en mélangeant deux chaînes identiques.
Détails du programme
Étant donné une chaîne d'entrée, sortez 0
si ce n'est pas un mélange de jumeaux, et sortez l'une des chaînes jumelles s'il s'agit d'un mélange de jumeaux.
Vous pouvez supposer que la chaîne d'entrée a une longueur comprise entre quatre et vingt caractères et est entièrement composée de caractères alphabétiques majuscules. Il devrait pouvoir fonctionner dans un laps de temps raisonnable, disons moins de 10 minutes.
C'est le golf de code, donc la solution la plus courte l'emporte.
Exemple d'E / S
> ABACBDECDE
ABCDE
> DBEACBCADE
0
> FFFFFF
FFF
> FFGGG
0
> ABBA
0
> AABB
AB
> AABAAB
AAB
J'ai un exemple d'implémentation (non-golfé) .
FFGGG
pour le rendre cohérent.
that the input string has a length inclusively between four and twenty characters
et ne me dites pas "ne faites jamais confiance aux entrées de l'utilisateur!", "Ne faites jamais confiance aux spécifications!"