Ваша задача - определить, насколько идеальным является палиндром струны. Ваш типичный палиндром (например, 12321) - идеальный палиндром; его совершенство равно 1.
Чтобы определить идеальность строки, вы видите, сколько разделов вы можете разбить на те, где каждый раздел является палиндромом. Если есть неоднозначности, например, с aaaa
, как вы можете разделить его на [aa, aa]
или [aaaa]
или [a, aaa]
или [aaa, a]
, самый короткий набор будет переопределен, давая aaaa
оценку 1, который является длиной самого короткого набора.
Следовательно, вы должны написать программу или функцию, которая будет принимать один непустой ввод и выводить, насколько он совершенен (длина самого короткого набора, на который вы можете разбить его, где каждый элемент в наборе является палиндромом).
Примеры:
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]
Обратите внимание, что в примерах ничего в квадратных скобках не должно быть частью вывода.
ababacab
и наоборот, bacababa
кажется, хорошие тестовые случаи.
ababacabBACABABA
также хороший тестовый пример (некоторые ответы на него не срабатывают).