Desafio retirado daqui e também daqui
Uma sequência de parênteses n consiste em n (
s e n )
s.
Uma sequência de parênteses válida é definida da seguinte maneira:
Você pode encontrar uma maneira de repetir a exclusão do par de parênteses "()" adjacente até que fique vazio.
Por exemplo,
(())
são parênteses válidos, você pode apagar o par na 2ª e na 3ª posição e ele se torna()
, então você pode torná-lo vazio.)()(
não é um parênteses válido, depois de apagar o par na 2ª e 3ª posição, ele se torna)(
e você não pode mais apagar
Tarefa
Dado um número n, você precisa gerar toda a sequência correta de parênteses em ordem lexicográfica
A saída pode ser uma matriz, lista ou sequência de caracteres (neste caso, uma sequência por linha)
Você pode usar um par diferente de parênteses, como {}
, []
, ()
ou qualquer sinal abrir-fechar
Exemplo
n = 3
((())) (()()) (())() ()(()) ()()()
n = 2
(()) ()()
1
s e -1
s)?