Given a string, determine if a permutation of the string could form a palindrome.code
For example,
"code" -> False, "aab" -> True, "carerac" -> True.orm
判断是否能够组成回文
给一个字符串,判断字符串中的字符是否能够组成回文rem
其实思路都同样,计算字符串中的字符个数;若字符串的字符有偶数个,则每一个字符的出现次数须要有偶数次;若字符串的字符有奇数个,则最多只能有一个字符出现过奇数次,其余字符都须要出现偶数次字符串
public boolean canPermutePalindromeOther1(String s) { Map<Character, Integer> map = new HashMap<>(); for (int i = 0; i < s.length(); i++) { map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0) + 1); } int singleCount = 0; for (Character c : map.keySet()) { if ((map.get(c) & 1) != 0) { singleCount++; } if (singleCount > 1) { break; } } return singleCount <= 1; }
public boolean canPermutePalindromeOther2(String s) { Set<Character> set = new HashSet<>(); for (int i = 0; i < s.length(); i++) { if (!set.add(s.charAt(i))) { set.remove(s.charAt(i)); } } return set.size() <= 1; }