题目链接:https://leetcode.com/problems/anagrams/

题目:

Given an array of strings, group anagrams together.For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"],
Return:[["ate", "eat","tea"],["nat","tan"],["bat"]
]
Note:
For the return value, each inner list's elements must follow the lexicographic order.
All inputs will be in lower-case.

解题思路:
题目的意思很明白,就是把具有相同字符的字符串放在同一个子列表中。

  • 判断两个字符串由相同的字符组成(字符之间的顺序未必相同)的方法,就是对字符串进行排序,使它们成为相同的字符串。
  • 为了能快速找到字符串的同伴(包含同类字符串的列表),把它们都放在一个 HashMap < String,list> 中,其中键为排过序的字符串,值为与键具有相同字符的未排序的字符串。这样,我们对数组中的字符串本身先排序,再以已排序的串作为键来查找其归属的列表,最后把未排序的串加入到 list 中。
  • 题目还要求在每个子列表中,字符串要按字典序排列。使用
Collections.sort(list, new  Comparator<String>() {  public int compare(String a, String b)return a.compareTo(b); });

对列表元素排序。

  • 需要注意的是,重写的 compare 方法是 public 的,不写 public 默认包访问权限小于原本的公有权限,会报编译错误。

代码实现:

public class Solution {public List<List<String>> groupAnagrams(String[] strs) {List<List<String>> res = new ArrayList();if(strs == null || strs.length == 0)return res;HashMap<String, List<String>> map = new HashMap();for(String str : strs) {char[] strtemp = str.toCharArray();Arrays.sort(strtemp);String sortStr = String.valueOf(strtemp);if(map.containsKey(sortStr))map.get(sortStr).add(str);else {List<String> list = new ArrayList();list.add(str);map.put(sortStr, list);}}for(Map.Entry<String, List<String>> m : map.entrySet()) {List<String> list = m.getValue();Collections.sort(list, new Comparator<String>() {public int compare(String a, String b) {return a.compareTo(b);}});res.add(list);}return res;}
}
100 / 100 test cases passed.
Status: Accepted
Runtime: 29 ms

49 Group Anagrams相关推荐

  1. 49.Group Anagrams

    49.Group Anagrams 题目描述:Given an array of strings, group anagrams together. For example, given: [&quo ...

  2. [swift] LeetCode 49. Group Anagrams

    Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...

  3. LeetCode 49. Group Anagrams

    Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...

  4. 【LeetCode】49. Group Anagrams

    题目: Given an array of strings, group anagrams together. For example, given: ["eat", " ...

  5. LeetCode 49 Group Anagrams(字符串分组)

    题目链接: https://leetcode.com/problems/anagrams/?tab=Description Problem:给一个字符串数组,将其中的每个字符串进行分组,要求每个分组中 ...

  6. 《每日一题》49. Group Anagrams 字母异位词分组

    给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan&quo ...

  7. 49. Group Anagrams [Medium]

    为应该分为同一组的str找到一个统一标识,作为HashMap的key,key对应的value是一个List map.values()就是结果的Collections形式,new ArrayList(m ...

  8. group anagrams leetcode java_LeetCode第[49]题(Java):Group Anagrams

    题目:同字符分组 难度:Medium 题目内容: Given an array of strings, group anagrams together. 翻译:给定一组字符串数组,按相同字符组成的字符 ...

  9. 对anagrams分组 Group Anagrams

    为什么80%的码农都做不了架构师?>>>    问题: Given an array of strings, group anagrams together. For example ...

最新文章

  1. 企业服务内部接口校验方案
  2. 【内容摘录自 MDN】变量作用域
  3. spring_在Spring MVC中使用多个属性文件
  4. 彻底理解 Redis 的持久化和主从复制
  5. Caffe学习笔记2
  6. JavaScript 中实现 sleep
  7. Oracle版本号的含义
  8. python全栈开发_day10_函数的实参和形参
  9. 除掉字符串里面相同的字符
  10. java 中缀算术表达式转换成后缀表达式_求Java堆栈,将中缀算术表达式转换成后缀表达式。...
  11. 游戏制造商Atari与去中心化游戏平台Enjin达成合作
  12. POJ1276:Cash Machine(多重背包)
  13. JavaScript调用Linux系统命令
  14. php集成环境 linux,linux下搭建php的集成环境
  15. 松下服务器报警13参数修改,新版松下伺服发生故障报警代码一览及对策.doc
  16. 手机客户端(EZview/智U)添加设备时,为什么会提示“该设备已被其他账号添加”?
  17. linux下word转pdf
  18. 光速不变原理引发的诡异现象与时空分量的解释
  19. c语言实现审查元素,如何删除qq空间说说?一键自动删除QQ空间说说审查元素代码分享(超简单)...
  20. windows挂起进程方法介绍

热门文章

  1. 拼了(求婚事务所电视原声带)铃声 拼了(求婚事务所电视原声带)...
  2. 京东云擎 php,利用京东云擎架设免费Wordpress 博客(git方式)
  3. 精读Slot Machines: Discovering Winning Combinations of Random Weights in Neural Networks
  4. mysql学习(基础语法)
  5. python数据类型——字典表dictionary和元组tuple基本操作举例
  6. error: 'LOGE' was not declared in this scope
  7. 百度和360,你想去哪儿?
  8. spring boot所打的jar在服务器启动时,日志打印时间、jar所使用时间和系统当前时间不一致
  9. vscode妙用 java golang go
  10. 2014年新年新气象