Sua tarefa é determinar o quanto de um palíndromo perfeito é uma string. Seu palíndromo típico (por exemplo, 12321) é um palíndromo perfeito; sua perfeição é 1.
Para determinar a perfeição de uma sequência, você vê quantas seções você pode dividir em onde cada seção é um palíndromo. Se houver ambiguidades, como com aaaa
, como você pode dividi-lo em [aa, aa]
ou [aaaa]
ou [a, aaa]
ou [aaa, a]
, o menor conjunto substituirá, dando aaaa
uma pontuação de 1, que é o tamanho do menor.
Portanto, você deve escrever um programa ou função que receba uma entrada não vazia e produza quão perfeita ela é (qual é o comprimento do menor conjunto que você pode dividir em que cada elemento do conjunto é um palíndromo).
Exemplos:
1111 -> 1 [1111]
abcb -> 2 [a, bcb]
abcbd -> 3 [a, bcb, d]
abcde -> 5 [a, b, c, d, e]
66a -> 2 [66, a]
abcba-> 1 [abcba]
x -> 1 [x]
ababacab -> 2 [aba, bacab]
bacababa -> 2 [bacab, aba]
26600 -> 3 [2, 66, 00] [my user id] [who has a more perfect user id?]
ababacabBACABABA -> 4 [aba, bacab, BACAB, ABA]
Observe que, nos exemplos, qualquer coisa entre colchetes não deve fazer parte da saída.
ababacab
e seu inverso, bacababa
parecem ser bons casos de teste.
ababacabBACABABA
também é um bom caso de teste (algumas respostas falham).