Menu
CoddyTech

Palindrome Partitioning

Un palindromo si legge allo stesso modo da sinistra a destra e da destra a sinistra. Suddividi la stringa s in uno o più pezzi, in modo che ogni pezzo sia un palindromo, e restituisci tutti i modi per farlo.

Scrivi ogni suddivisione come i suoi pezzi in ordine, separati da |: dividendo aab in a, a e b si ottiene a|a|b. Restituisci le suddivisioni in ordine crescente, confrontando i codici dei caratteri, così che | venga dopo ogni lettera minuscola.

Funzione

partition(s: string) → string-array
sstring
la stringa di lettere minuscole da tagliare
Restituiscestring-array
ogni suddivisione di s in palindromi, scritta con | tra i pezzi, in ordine crescente

Vincoli

  • 1 ≤ s.length ≤ 11
  • s contiene solo lettere inglesi minuscole.
  • Una stringa di 11 lettere uguali ha 1.024 suddivisioni, la risposta più grande.

Esempi

Input
s = "aab"
Output
["aa|b", "a|a|b"]
Spiegazione
Solo aa|b e a|a|b hanno tutte le parti palindromiche; a|ab non supera il test su ab. aa|b viene prima nell’ordinamento: al secondo carattere ha a, mentre l’altro ha |, che viene dopo ogni lettera nell’ordinamento.
challenge icon

Per approfondire

Riesci a trovare il numero minimo di tagli necessari per dividere s in palindromi, per stringhe lunghe fino a 2.000 caratteri?

Ripristina il codice
def partition(s):
    # Scrivi il codice qui

Test #1

Test #2

Argomento

s = "aab"

Output atteso

["aa|b", "a|a|b"]