Twoim zadaniem jest określenie, ile doskonałego palindromu ma struna. Twój typowy palindrom (np. 12321) to idealny palindrom; jego doskonałość wynosi 1.
Aby określić doskonałość łańcucha, zobaczysz, ile sekcji można podzielić na sekcje, gdzie każda sekcja to palindrom. Jeśli występują niejednoznaczności, takie jak z aaaa
, ponieważ można go podzielić na [aa, aa]
lub [aaaa]
lub [a, aaa]
lub [aaa, a]
, najkrótszy zestaw zastąpi się, dając aaaa
wynik 1, czyli długość najkrótszego zestawu.
Dlatego musisz napisać program lub funkcję, która pobierze jedno niepuste wejście i wyświetli, jaki jest doskonały (czyli długość najkrótszego zestawu, w którym można go podzielić na miejsce, gdzie każdy element w zestawie jest palindromem).
Przykłady:
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]
Zauważ, że w przykładach nic w nawiasach kwadratowych nie powinno być częścią wyniku.
ababacab
i odwrotnie, bacababa
wydają się to dobre przypadki testowe.
ababacabBACABABA
jest również dobrym przypadkiem testowym (niektóre odpowiedzi na nim się nie udają).