Menu
CoddyTech

Palindrome Partitioning

Un palíndromo se lee igual de izquierda a derecha y de derecha a izquierda. Divide la cadena s en una o más partes de modo que cada parte sea un palíndromo y devuelve todas las formas de hacerlo.

Escribe cada división con sus partes en orden, unidas por |: dividir aab en a, a y b da a|a|b. Devuelve las divisiones ordenadas en orden ascendente, comparando los códigos de los caracteres, de modo que | vaya después de todas las letras minúsculas.

Función

partition(s: string) → string-array
sstring
la cadena de letras minúsculas que se debe cortar
Devuelvestring-array
cada división de s en palíndromos, escritos con | entre las partes, en orden ascendente

Restricciones

  • 1 ≤ s.length ≤ 11
  • s contiene solo letras minúsculas del alfabeto inglés.
  • Una cadena de 11 letras iguales tiene 1,024 divisiones, la respuesta más grande.

Ejemplos

Entrada
s = "aab"
Salida
["aa|b", "a|a|b"]
Explicación
Solo aa|b y a|a|b tienen todas las partes palindrómicas; a|ab falla en ab. aa|b aparece primero al ordenar: en el segundo carácter tiene a, mientras que el otro tiene |, que se ordena después de todas las letras.
challenge icon

Para ir más allá

¿Puedes encontrar el menor número de cortes que divide s en palíndromos, para cadenas de hasta 2.000 caracteres?

Restablecer código
def partition(s):
    # Escribe el código aquí

Prueba #1

Prueba #2

Argumento

s = "aab"

Salida Esperada

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