思路分析
- 能够构成回文数的话,那么除了前后相互配对的字符,剩下的字符必然是1个或0个,比如tacocat剩下的就是1个,toccot剩下的就是0个
- 如果有这么一个数据结构,我们将这个字符串转化为字符数组,遍历这个字符数组。将值存储到这个数据结构,如果该字符已经出现过一次了,那么下次遍历到的时候就将它移除。很显然HashSet符合
- 所以在最后如果HashSet的大小小于等于1的时候,那么它必然是回文串。反之则不是
class Solution {
public boolean canPermutePalindrome(String s) {
Set<Character> set = new HashSet<>();
char[] chars = s.toCharArray();
for (char c : chars) {
if (!set.add(c)) {
set.remove(c);
}
}
return set.size() <= 1;
}
}