49. Group Anagrams

Link

Given an array of strings, group anagrams together.

Example:

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

Note:

  • All inputs will be in lowercase.

  • The order of your output does not matter.

Solution

Idea: 若是anagrams的話sort過結果會一樣。

  public static List<List<String>> groupAnagrams(String[] strs) {
        HashMap<String, ArrayList<String>> map = new HashMap<>();
        ArrayList<String> list;
        for(String str : strs){
            char[] chars = str.toCharArray();
            Arrays.sort(chars);
            String str1Key = new String(chars);
            if(!map.containsKey(str1Key)){
                list = new ArrayList<>();
                list.add(str);
                map.put(str1Key, list);
            }else{
                map.get(str1Key).add(str);
            }
        }
        return new ArrayList<List<String>>(map.values());
    }
   

Last updated

Was this helpful?