您的任务是确定一个字符串有多少完美的回文。您的典型回文(例如12321)是一个完美的回文。完美是1。
要确定字符串的完美性,您可以看到可以将其分成多少部分,每个部分都是回文。如果存在歧义,例如with aaaa
,可以将其拆分为[aa, aa]
or [aaaa]
或[a, aaa]
or [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
也是一个很好的测试用例(一些答案失败了)。