Menu
CoddyTech

Generate Parentheses

Una cadena de paréntesis está bien formada cuando, al leerla de izquierda a derecha, el número de ) nunca supera el número de (, y ambos recuentos son iguales al final. Así, (())() está bien formada, mientras que ())( no lo está: su tercer carácter cierra un par que nunca se abrió.

Recibes un entero n. Devuelve todas las cadenas bien formadas compuestas por n paréntesis de apertura y n paréntesis de cierre, ordenadas lexicográficamente, donde ( va antes que ).

Función

generateParenthesis(n: integer) → string-array
ninteger
el número de pares de paréntesis
Devuelvestring-array
cada cadena bien formada de n pares, en orden lexicográfico

Restricciones

  • 1 ≤ n ≤ 8
  • Para n = 8, la respuesta contiene 1,430 cadenas.

Ejemplos

Entrada
n = 3
Salida
["((()))", "(()())", "(())()", "()(())", "()()()"]
Explicación
Tres pares se pueden ordenar de cinco maneras bien formadas. ((())) abre los tres antes de cerrar cualquiera y, como ( se ordena primero, encabeza la lista; ()()() cierra cada par de inmediato y aparece al final.

lock icon+10 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿Puedes contar las cadenas bien formadas para n pares sin generarlas?

Restablecer código
def generateParenthesis(n):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Entrada

n = 3

Esperado

["((()))", "(()())", "(())()", "()(())", "()()()"]