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());
}

results matching ""

    No results matching ""