Ваше завдання - визначити, наскільки досконала паліндромна струна. Ваш типовий паліндром (наприклад, 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
це також хороший тестовий випадок (деякі відповіді на нього не вдається).