lc49 Group Anagram

逻辑很简单,就是统计字母出现次数,然后将完全相同的字符串放入同一list

关键是怎么实现

统计的部分,可以通过将string排序,Arrays.sort(),或者像之前int[26]一样,

那么如何一次遍历,就能将相同字符串放入一个list呢?

这里用到了HashMap<String, List<String>>,String为key,用来判断排序过后的str是否相同,若是相同,直接原来的str加入List<String>

最后返回值就是把map的value转成List<List<String>>

可以用到一个小方法:

  return new ArrayList<List<String>>(map.values())

因为HashMap的value都是List<String>

 class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> res = new ArrayList<>();
if(strs.length == 0)
return res;
HashMap<String, List<String>> map = new HashMap<>(); for(int i=0; i<strs.length; i++){
char[] tmp = strs[i].toCharArray();
Arrays.sort(tmp);
String key = String.valueOf(tmp);
if(!map.containsKey(key))
map.put(key, new ArrayList<String>());
map.get(key).add(strs[i]);
} return new ArrayList<List<String>>(map.values());
}
}

最新文章

  1. 利用log4j+mongodb实现分布式系统中日志统一管理
  2. 从零点壹开始学JAVA(DAY 1 笔记)&lt;补充记录&gt;
  3. python成长之路【第十四篇】:HTML初步认识
  4. window.showModalDialog返回值和window.open返回值实例详解
  5. .NET Framework中重点类型的继承关系
  6. 6-04使用SQL语句更新数据
  7. 【BZOJ2821】作诗(Poetize) 分块
  8. IOS开发 应用程序图标数字角标
  9. (转)经典SQL查询语句大全
  10. ASP.NET动态加载Js代码到Head标签中(三种方法)
  11. BZOJ 2727 双十字(树状数组)
  12. backbone-1.3.3源码解析-----------Event
  13. expunge
  14. C 二叉树
  15. linux-多线程
  16. .Net操作XML文件
  17. android特效
  18. git忽略特殊文件
  19. 游戏中实现粒子碰撞,纯java
  20. mysql_建立索引的优缺点

热门文章

  1. 下载mysql出现的问题
  2. hadoop镜像文件和编辑日志文件
  3. Java基础 ----- 判断对象的类型
  4. LuoguP3498 [POI2010]KOR-Beads
  5. phonegap 拍照上传照片
  6. 跳过爱奇艺优酷vip
  7. IPMI 远程配置
  8. uoj60 怎样提高智商
  9. 二分+2-sat——hdu3062
  10. 北京服务业占GDP比重达81.7%