来源:
描述
给定一个字符串,判断字符串是否存在一个排列是回文排列。
样例
给定s = "code", 返回 False.
给定s = "aab", 返回 True.
给定s = "carerac", 返回 True.
解题思路:
千万不要走到用各种数据结构的误区里面去,直接数个数就好.
实现代码
/**
* 回文排列
*/
public boolean canPermutePalindrome(String s) {
// 处理空字符串
if (s.length() == 0) {
return true;
}
HashMap<Character, Integer> result = new HashMap<>();
char[] arr = s.toCharArray();
//分别计数每个字符出现的次数
for (char anArr : arr) {
if (null != result.get(anArr)) {
result.put(anArr, result.get(anArr) + 1);
continue;
}
result.put(anArr, 1);
}
//如果奇数个字符的数量大于1个,则返回false,否则返回true.
return result.values().stream().filter(per -> per % 2 != 0).count() <= 1;
}
完。
ChangeLog
2018-12-10 完成以上皆为个人所思所得,如有错误欢迎评论区指正。
欢迎转载,烦请署名并保留原文链接。
联系邮箱:huyanshi2580@gmail.com
更多学习笔记见个人博客------>呼延十