Menu
CoddyTech

Palindrome Partitioning

Um palíndromo é lido da mesma forma da esquerda para a direita e da direita para a esquerda. Divida a string s em uma ou mais partes, de modo que cada parte seja um palíndromo, e retorne todas as maneiras de fazer isso.

Escreva cada divisão com suas partes na ordem, separadas por |: dividir aab em a, a e b resulta em a|a|b. Retorne as divisões em ordem crescente, comparando os códigos dos caracteres, de modo que | venha depois de todas as letras minúsculas.

Função

partition(s: string) → string-array
sstring
a sequência de letras minúsculas a ser cortada
Retornastring-array
cada divisão de s em palíndromos, escrita com | entre as partes, em ordem crescente

Restrições

  • 1 ≤ s.length ≤ 11
  • s contém apenas letras minúsculas do alfabeto inglês.
  • Uma string de 11 letras iguais tem 1.024 divisões, a resposta mais alta.

Exemplos

Entrada
s = "aab"
Saída
["aa|b", "a|a|b"]
Explicação
Apenas aa|b e a|a|b têm todas as partes palindrômicas; a|ab falha em ab. aa|b vem primeiro na ordenação: no segundo caractere, ele tem a, enquanto o outro tem |, que vem depois de todas as letras.
challenge icon

Para ir além

Você consegue encontrar o menor número de cortes que divide s em palíndromos, para strings de até 2.000 caracteres?

Redefinir código
def partition(s):
    # Escreva o código aqui

Teste #1

Teste #2

Argumento

s = "aab"

Saída Esperada

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