Menu
CoddyTech

Generate Parentheses

Una stringa di parentesi è ben formata quando, leggendola da sinistra a destra, il numero di ) non supera mai il numero di ( e i due conteggi sono uguali alla fine. Quindi (())() è ben formata, mentre ())( non lo è: il suo terzo carattere chiude una coppia che non era mai stata aperta.

Ti viene dato un intero n. Restituisci tutte le stringhe ben formate composte da n parentesi aperte e n parentesi chiuse, ordinate in ordine lessicografico, dove ( precede ).

Funzione

generateParenthesis(n: integer) → string-array
ninteger
il numero di coppie di parentesi
Restituiscestring-array
ogni stringa ben formata di n coppie, in ordine lessicografico

Vincoli

  • 1 ≤ n ≤ 8
  • Per n = 8 la risposta contiene 1.430 stringhe.

Esempi

Input
n = 3
Output
["((()))", "(()())", "(())()", "()(())", "()()()"]
Spiegazione
Tre coppie possono essere disposte in cinque modi ben formati. ((())) apre tutte e tre prima di chiuderne una qualsiasi e, poiché ( viene prima nell’ordinamento, è il primo dell’elenco; ()()() chiude subito ogni coppia e viene per ultimo.

lock icon+10 test nascosti all’invio

challenge icon

Per approfondire

Riesci a contare le stringhe ben formate per n coppie senza generarle?

Ripristina il codice
def generateParenthesis(n):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Input

n = 3

Atteso

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