字母异位词分组

69 阅读1分钟
// 字母异位词分组 排序+hash  
// 输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]  
// 输出: [["bat"],["nat","tan"],["ate","eat","tea"]]  
public static List<List<String>> groupAnagrams(String[] strs){  
    HashMap<String, List<String>> map = new HashMap<String, List<String>>();  
    for(String str:strs){  
        char[] array = str.toCharArray();  
        Arrays.sort(array);  
        String key=new String(array);  
        List<String> list=map.getOrDefault(key,new ArrayList<String>());  
        list.add(str);  
        map.put(key,list);  
    }  
    return new ArrayList<List<String>>(map.values());  
}