Contexte
Une poupée matriochka (ou poupée russe de nidification) est un ensemble de poupées qui s'emboîtent les unes dans les autres. J'ai accidentellement mélangé ma collection de poupées matriochka et je ne me souviens pas laquelle va à l'intérieur de laquelle.
Objectif
Étant donné une liste de chaînes uniques , triez-les en poupées matriochka imbriquées. Chaque chaîne est une poupée individuelle, et une poupée matriochka est une liste de chaînes.
Règles
Soit min(a,b)le min lexicographique des chaînes aet b. Supposons a ⊂ bque ac'est une sous-chaîne de b. Alors,
- La liste des poupées matriochka doit être triée lexicographiquement
- La chaîne
apeut tenir dans la chaînebsia ⊂ b - Si
a ⊂ beta ⊂ c, alorsaira à l'intérieurmin(b,c) - Si les deux
a ⊂ cetb ⊂ c, maisa ⊄ bb ⊄ a, alors seulementmin(a,b)iront à l'intérieurc - Si les deux
a ⊂ cetb ⊂ c, et aussia ⊂ b, alors seulementbiront à l'intérieurc. C'est-à-dire que les superstrings passent avant les sous-chaînes afin que la matriochka ne se termine pas prématurément.
Exemples
In:
hahaha, hah, lol, lololol, bahaha, bah, haha, ah
Out:
bahaha, bah, ah
hahaha, haha, hah
lololol, lol
In:
aa, aaaa, a, aaaaaaaaaa
Out:
aaaaaaaaaa, aaaa, aa, a
ab, ba, aba, bab? Selon la règle 3, les deux abet badoivent entrer dans aba, et selon la règle 4, bane peut pas entrer dans l'un abaou l' autre bab.