49. Group Anagrams
来源:互联网 发布:设置主键的sql语句 编辑:程序博客网 时间:2024/05/02 04:15
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.
Solution 1
public static List<List<String>> groupAnagrams(String[] strs) {if(strs==null || strs.length == 0){ return new ArrayList<List<String>>(); } HashMap<String, List<String>> map = new HashMap<String, List<String>>(); //Arrays.sort(strs); for (String s:strs) { char[] ca = s.toCharArray(); Arrays.sort(ca); String keyStr = String.valueOf(ca); if(!map.containsKey(keyStr)) map.put(keyStr, new ArrayList<String>()); map.get(keyStr).add(s); } //sort the map is much faster than sort the array for(String key: map.keySet()) { Collections.sort(map.get(key)); } return new ArrayList<List<String>>(map.values());}
Solution 2 Grantee the return list is sorted
public List<List<String>> groupAnagrams(String[] strs) { List<List<String>> res = new ArrayList<List<String>>(); if(strs == null || strs.length == 0){ return res; } Map<String, Integer> map = new HashMap<String, Integer>(); Arrays.sort(strs); for(String s : strs){ char[] c = s.toCharArray(); Arrays.sort(c); String keyString = String.valueOf(c); if(map.containsKey(keyString)){ List<String> temp = res.get(map.get(keyString)); temp.add(s); }else{ List<String> list = new ArrayList<String>(); list.add(s); res.add(list); map.put(keyString, res.size() - 1); } } return res; }
0 0
- 49. Group Anagrams
- [leetcode] 49.Group Anagrams
- 49. Group Anagrams
- LeetCode 49. Group Anagrams
- [LeetCode]49. Group Anagrams
- leetcode 49. Group Anagrams
- 49. Group Anagrams LeetCode
- 49. Group Anagrams
- 49. Group Anagrams
- 49. Group Anagrams
- Leetcode 49. Group Anagrams
- 49. Group Anagrams
- LeetCode 49. Group Anagrams
- 49. Group Anagrams
- 49. Group Anagrams
- LeetCode 49. Group Anagrams
- [leetcode] 49. Group Anagrams
- LeetCode 49. Group Anagrams
- 简析transform,transition,animation,@key frames的关系
- 正则表达式(regular expression)
- ERROR! The server quit without updating PID file (/usr/local/mysql-5.5.32/data/zexi.pid).
- replaceAll()用法
- Android Studio新建assets文件即放置
- 49. Group Anagrams
- split()使用方法
- C++中的值传递 | 指针传递 | 引用传递
- JDK源码阅读——ArrayList(1)
- iOS控制打印日志
- python变量赋值(可变与不可变)
- hdu 5631 (并查集)
- 外挂辅助与安全技术的爱恨情仇
- c++编程拾贝(二)