题目来源
题目描述
题目解析
消消乐
采用消消乐的思想,遍历字符串,如果set集合中有当前字符则消除它,没有就添加它,最终字符数量小于等于1说明它能完成对称
class Solution {
public boolean canPermutePalindrome(String s) {
Set<Character> set = new HashSet<>();
char[] carr = s.toCharArray();
for (Character c : carr){
if (set.contains(c)){
set.remove(c);
}else{
set.add(c);
}
}
return set.size() == 0 || set.size() == 1;
}
}
class Solution {
public:
bool canPermutePalindrome(string s) {
std::unordered_set<char > setter;
for(char &ch : s){
if(setter.count(ch)){
setter.erase(ch);
}else{
setter.insert(ch);
}
}
return setter.size() <= 1;
}
};
位运算
class Solution {
public:
bool canPermutePalindrome(string s) {
std::bitset<128> bitVec;
for(char & ch : s){
bitVec.flip(ch); //flip用来把bitVector中ch处的二进制位取反
}
//最后判断bitVector是否为空,或者只存在一个二进制位为1的位
return bitVec.none() || bitVec.count() == 1;
}
};