49 Group Anagrams
题目链接: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相关推荐
- 49.Group Anagrams
49.Group Anagrams 题目描述:Given an array of strings, group anagrams together. For example, given: [&quo ...
- [swift] LeetCode 49. Group Anagrams
Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...
- LeetCode 49. Group Anagrams
Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...
- 【LeetCode】49. Group Anagrams
题目: Given an array of strings, group anagrams together. For example, given: ["eat", " ...
- LeetCode 49 Group Anagrams(字符串分组)
题目链接: https://leetcode.com/problems/anagrams/?tab=Description Problem:给一个字符串数组,将其中的每个字符串进行分组,要求每个分组中 ...
- 《每日一题》49. Group Anagrams 字母异位词分组
给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan&quo ...
- 49. Group Anagrams [Medium]
为应该分为同一组的str找到一个统一标识,作为HashMap的key,key对应的value是一个List map.values()就是结果的Collections形式,new ArrayList(m ...
- group anagrams leetcode java_LeetCode第[49]题(Java):Group Anagrams
题目:同字符分组 难度:Medium 题目内容: Given an array of strings, group anagrams together. 翻译:给定一组字符串数组,按相同字符组成的字符 ...
- 对anagrams分组 Group Anagrams
为什么80%的码农都做不了架构师?>>> 问题: Given an array of strings, group anagrams together. For example ...
最新文章
- 企业服务内部接口校验方案
- 【内容摘录自 MDN】变量作用域
- spring_在Spring MVC中使用多个属性文件
- 彻底理解 Redis 的持久化和主从复制
- Caffe学习笔记2
- JavaScript 中实现 sleep
- Oracle版本号的含义
- python全栈开发_day10_函数的实参和形参
- 除掉字符串里面相同的字符
- java 中缀算术表达式转换成后缀表达式_求Java堆栈,将中缀算术表达式转换成后缀表达式。...
- 游戏制造商Atari与去中心化游戏平台Enjin达成合作
- POJ1276:Cash Machine(多重背包)
- JavaScript调用Linux系统命令
- php集成环境 linux,linux下搭建php的集成环境
- 松下服务器报警13参数修改,新版松下伺服发生故障报警代码一览及对策.doc
- 手机客户端(EZview/智U)添加设备时,为什么会提示“该设备已被其他账号添加”?
- linux下word转pdf
- 光速不变原理引发的诡异现象与时空分量的解释
- c语言实现审查元素,如何删除qq空间说说?一键自动删除QQ空间说说审查元素代码分享(超简单)...
- windows挂起进程方法介绍
热门文章
- 拼了(求婚事务所电视原声带)铃声 拼了(求婚事务所电视原声带)...
- 京东云擎 php,利用京东云擎架设免费Wordpress 博客(git方式)
- 精读Slot Machines: Discovering Winning Combinations of Random Weights in Neural Networks
- mysql学习(基础语法)
- python数据类型——字典表dictionary和元组tuple基本操作举例
- error: 'LOGE' was not declared in this scope
- 百度和360,你想去哪儿?
- spring boot所打的jar在服务器启动时,日志打印时间、jar所使用时间和系统当前时间不一致
- vscode妙用 java golang go
- 2014年新年新气象