LeetCode热题100——字母异位词分组(2)

题目链接:https://leetcode.cn/problems/group-anagrams/description/?envType=study-plan-v2&envId=top-100-liked

哈希、排序

排序后得到的字符串是相同的,作为哈希表的键

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
    	//创建一个哈希表h,键值分别对应排序好的字符串和分组列表
        Map<String, List<String>> h = new HashMap<String, List<String>>();
        //遍历字符串数组strs
        for(String str : strs){
        	//将字符串str转化为字符数组a
            char[] a = str.toCharArray();
            //将字符数组a排序
            Arrays.sort(a);
            //将排序好的字符数组a存储到字符串key中
            String key = new String(a);
            //从哈希表h中获取键为key的分组列表,如果不存在就创建一个空列表
            List<String> list = h.getOrDefault(key, new ArrayList<String>());
            //将字符串str添加到分组列表中
            list.add(str);
            //将字符串和更新后的分组列表重新放回哈希表h中
            h.put(key, list);
        }
        return new ArrayList<List<String>>(h.values());
    }
}

还剩98题!

你可能感兴趣的:(LeetCode热题100,leetcode,算法,职场和发展,java)