面试题 01.04. 回文排列
巧用 set 记录字符出现次数
将问题转化为判断字符是否成对出现,只允许一个字符出现次数为奇数
class Solution {
// 要求一个字符中的字符出现次数为偶数,有且仅有一个字符出现次数为奇数次
// 巧妙地使用 set 记录,如果 set 中不存在则 add,如果 set 中存在则 remove
// 遍历完整个字符串如果 set 长度小于等于 1 则说明符合要求
public boolean canPermutePalindrome(String s) {
Set<Character> set = new HashSet<Character>();
for (char c : s.toCharArray()) {
if (set.contains(c)) {
set.remove(c);
} else {
set.add(c);
}
}
return set.size() <= 1;
}
}