解法1:
此题看起来就是用backtracking,但是如果直接用会TLE。
首先观察,如果一个字符串出现奇数次的字符的个数>1,那一定不能组成回文串。
所以奇数个次数的字符最多一个。并且如果有的话最中间的一定是他。
所以偶数回文串可以分成前后两段,奇数回文串可以分成前中后三段。
我们把所有的字符出现的次数/2,加上中段和reverse过的前段就可以得到一个回文串。
那么问题就转变成了求/2过后的子串的所有的permutation。具体的解法如下
|
|
此题看起来就是用backtracking,但是如果直接用会TLE。
首先观察,如果一个字符串出现奇数次的字符的个数>1,那一定不能组成回文串。
所以奇数个次数的字符最多一个。并且如果有的话最中间的一定是他。
所以偶数回文串可以分成前后两段,奇数回文串可以分成前中后三段。
我们把所有的字符出现的次数/2,加上中段和reverse过的前段就可以得到一个回文串。
那么问题就转变成了求/2过后的子串的所有的permutation。具体的解法如下
|
|