原题

Given a string, determine if a permutation of the string could form a palindrome.

For example,

"code" -> False, "aab" -> True, "carerac" -> True.

解析

判断是否可以组成回文

给一个字符串,判断字符串中的字符是否可以组成回文

思路

其实思路都一样,计算字符串中的字符个数;若字符串的字符有偶数个,则每个字符的出现次数需要有偶数次;若字符串的字符有奇数个,则最多只能有一个字符出现过奇数次,其他字符都需要出现偶数次

解法1:利用Map 的key的唯一性

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;
}

解法2:利用Set元素的唯一性

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;
}

最新文章

  1. asp.net mvc4 Html.BeginForm表单提交
  2. Code笔记之:CSS+HTML display 属性
  3. SQL merge into 表合并
  4. Pyqt 设置 背景颜色和背景图片、 QPalette 调色板 与QPainter 画板区别 、 不规则图片
  5. Vs2012调试本地windows服务
  6. UIbutton 和UIview 切单角
  7. c#生成随机数示例分享
  8. 关于IIS中WEB网站访问弹“验证输入框”及“401限制访问”的解决办法
  9. UVA 1601 The Morning after Halloween
  10. select,poll,epoll之api笔记
  11. Extjs grid column里添加button等html标签,并增加点击事件
  12. yafu安装使用方法以及mismatched parens解决方法
  13. CSS Grid基于网格的二维布局系统(详细教程)
  14. tomcat 配置本地路径映射
  15. CF558E-A Simple Task-线段树+计数排序
  16. svnrdump:E175000:SSL is not supported错误的解决
  17. MogileFS-2.44 安装与配置
  18. django 使用mysql 数据库
  19. 【原创】express3.4.8源码解析之Express结构图
  20. OO学习第二阶段总结

热门文章

  1. 零基础学Python_汇总贴
  2. ES6深入浅出-5 新版对象-1.如何创建对象
  3. xml文档操作
  4. matlab学习笔记2--matlab的帮助
  5. Java Thread Local – How to use and code sample(转)
  6. docker之容器日志输出与系统时间相差8小时解决办法
  7. visual studio 2017搭建linux c++开发环境
  8. Elasticsearch聚合操作报错解决办法
  9. (一)linux 学习 -- 在文件系统中跳转
  10. BJFU-207-基于顺序存储结构的图书信息表的逆序存储