Group Anagram
Given an array of strings, group anagrams together.
- Time: O(n)
- Space: O(1)
public 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>>();
for (String s : strs) {
char[] chars = s.toCharArray();
Arrays.sort(chars);
String keyStr = String.valueOf(chars);
if (!map.containsKey(keyStr))
map.put(keyStr, new ArrayList<String>());
map.get(keyStr).add(s);
}
for (String key : map.keySet()) {
Collections.sort(map.get(key));
}
return new ArrayList<List<String>>(map.values());
}