Dada uma entrada entre parênteses corretamente, digite uma lista de todas as substrings não vazias entre parênteses correspondentes (ou fora de todos os parênteses), com os parênteses aninhados removidos. Cada substring deve ter a sequência de caracteres exatamente nos mesmos parênteses correspondentes. As seqüências de caracteres devem ser listadas em ordem de profundidade e as da mesma profundidade devem ser listadas na ordem em que ocorrem na sequência. Suponha que a entrada esteja sempre entre parênteses corretamente.
Você pode supor que a entrada contenha apenas letras ASCII em minúsculas e parênteses.
Sua resposta deve ser uma função que, quando recebe uma string, retorna uma lista de strings.
Exemplos:
'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']
Menos bytes ganha.
i
é menos profundamente aninhado que d
.
'i'
e'd'
na ordem correta no último caso de teste?