Data una stringa tra parentesi corretta come input, genera un elenco di tutte le sottostringhe non vuote all'interno delle parentesi corrispondenti (o al di fuori di tutte le parentesi), con le parentesi nidificate rimosse. Ogni sottostringa dovrebbe essere la sequenza di caratteri esattamente tra le stesse parentesi corrispondenti. Le sottostringhe devono essere elencate in ordine di profondità e le sottostringhe della stessa profondità devono essere elencate nell'ordine in cui si verificano nella stringa. Supponiamo che l'input sia sempre tra parentesi correttamente.
Si può presumere che l'input contenga solo lettere e parentesi ASCII minuscole.
La tua risposta dovrebbe essere una funzione che, quando viene data una stringa, restituisce un elenco di stringhe.
Esempi:
'a(b)c(d)e' -> ['ace', 'b', 'd']
'a(b(c)d)e' -> ['ae', 'bd', 'c']
'a((((b))))' -> ['a', 'b']
'a()b' -> ['ab']
'' -> []
'a' -> ['a']
'(((a(b)c(d)e)f)g)h' -> ['h', 'g', 'f', 'ace', 'b', 'd']
'ab(c(((d)ef()g)h()(i)j)kl)()' -> ['ab', 'ckl', 'hj', 'efg', 'i', 'd']
Vince il minor numero di byte.
i
è nidificato meno profondamente di d
.
'i'
e'd'
nell'ordine corretto nell'ultimo caso di test?