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 a
et b
. Supposons a ⊂ b
que a
c'est une sous-chaîne de b
. Alors,
- La liste des poupées matriochka doit être triée lexicographiquement
- La chaîne
a
peut tenir dans la chaîneb
sia ⊂ b
- Si
a ⊂ b
eta ⊂ c
, alorsa
ira à l'intérieurmin(b,c)
- Si les deux
a ⊂ c
etb ⊂ c
, maisa ⊄ b
b ⊄ a
, alors seulementmin(a,b)
iront à l'intérieurc
- Si les deux
a ⊂ c
etb ⊂ c
, et aussia ⊂ b
, alors seulementb
iront à 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 ab
et ba
doivent entrer dans aba
, et selon la règle 4, ba
ne peut pas entrer dans l'un aba
ou l' autre bab
.