LeetCode 049 Group Anagrams
2015-12-24 10:14
295 查看
题目描述
Given an array of strings, group anagrams together.For example, given:
["eat", "tea", "tan", "ate", "nat", "bat"],
Return:
[code][ ["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.
分析
把每个string,按照字母分组,如”abc”和”cba”是一组维护一个map,key是abc,value是abc一组string出现的下标
把每一组string找出,排序,加入结果
代码
[code] public List<List<String>> groupAnagrams(String[] strs) { if (strs == null || strs.length == 0) { return new ArrayList<List<String>>(); } List<List<String>> rt = new ArrayList<List<String>>(); Map<String, ArrayList<Integer>> map = new HashMap<String, ArrayList<Integer>>(); // 把单词分组 for (int i = 0; i < strs.length; i++) { char[] c = strs[i].toCharArray(); Arrays.sort(c); String k = Arrays.toString(c); ArrayList<Integer> list = new ArrayList<Integer>(); if (map.containsKey(k)) { list = map.get(k); } list.add(i); map.put(k, list); } for (String s : map.keySet()) { List<Integer> l = map.get(s); List<String> group = new ArrayList<String>(); // 把相同字母的单词放入同一个list for (Integer i : l) { group.add(strs[i]); } // 按字典序排序 group.sort(new Comparator<String>() { public int compare(String x, String y) { return x.compareTo(y); } }); rt.add(group); } return rt; }
相关文章推荐
- oracle字段xml特殊字符处理
- Webwork 学习之路(三)核心类 ServletDispatcher 的初始化
- css3 实现的两个3d效果
- ManifoldJS
- Java单播、广播、多播(组播)
- Android listview 部分布局监听
- PAT-计算圆周率(简单编程题)
- (ros/ros operating system )roscore: command not found
- 华为OJ:名字的漂亮度
- web 前后台数据交互的方式
- PHP下SSL加密解密、验证、签名方法(很简单)
- log4j.xml 配置不同的log到不同的文件
- 一些spark的相关链接
- mysql日志文件
- SDWebImage异步加载图片及缓存的管理与清理
- Top JavaScript Frameworks, Libraries & Tools and When to Use Them
- http request 获取复杂json数据时出现异常解决额
- 使用user library出现以下问题的解决方法
- [eclipse]android开发如何查看源代码文件(android source)
- HTML5初识