Menu
CoddyTech

Generate Parentheses

Una cadena de paréntesis está bien formada cuando, al leerla de izquierda a derecha, la cantidad de ) nunca supera la cantidad de (, y ambas cantidades son iguales al final. Por lo tanto, (())() está bien formada, mientras que ())( no lo está: su tercer carácter cierra un par que nunca se abrió.

Dado un entero n, devuelve todas las cadenas bien formadas con 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 forman cinco cadenas bien formadas. ((())) abre los tres pares primero, así que se ordena primero; ()()() cierra cada par de inmediato y queda al final.
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í

Prueba #1

Prueba #2

Argumento

n = 3

Salida Esperada

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