回文排列

给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。

回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。

回文串不一定是字典当中的单词。

示例1:

输入:"tactcoa"
输出:true(排列有"tacocat"、"atcocta",等等)

class Solution {
    public boolean canPermutePalindrome(String s) {

        char[] chars = s.toCharArray();
// 根据set的存储结构,不能存储相同的元素,将该字符串放到set中
        HashSet<Character> characters = new HashSet<Character>();
//如果该字符串是回文数,且字符串长度为偶数的话,set集合中应该正好因为存一个删一个抵消掉,而长度为奇数的话正好剩下中间那个
        for (Character character : chars) {//一边存一边删
            if (characters.contains(character)){
                characters.remove(character);//如果正在操作的字符在set中已经存在就删除
            }else {
                characters.add(character);//如果正在操作的字符在set中没有就保存
            }
        }
        return characters.size()<=1;

    }
}




原文地址:https://www.cnblogs.com/love-xk/p/13054814.html