题目大意:(题意有点模糊,看讨论猜的)给一个字符串,判断该串重排列后能否成为回文串. 解题思路:看字符串每个字符的出现频率,出现偶数次的必然能组成回文,出现奇数次的字符最多只能有1个,这个字符即作为回文的中心.
用c++的bitset容器实现,检测到每个字符,相应位置反转.
class Solution {
public:
bool canPermutePalindrome(string s) {
bitset<256> b; //长度为256,初始为0
for (auto c : s) { //对每个字符,将b中相应位置(ASC码表示)反转
b.flip(c);
}
return b.count() < 2; //统计b中1的个数,必须小于2
}
};