哈希表 06

2020-12-14  本文已影响0人  眼若繁星丶

哈希表06

LeetCode 49

题解:

要求字母异位词,换句话说,在经过字典排序后,异位词是完全相同的,而相同的字符串,则可作为哈希表的Key,然后对应的value则是该词的异位词。

创建map<String, List<String>>,遍历题目给的字符串数组,每访问一个字符串,都先进行字典排序,然后作为key去map里面找value,不存在则创建空List集合,相当于把map里面的异位词对应当前找到的所有结果都拿出来,然后将现在遍历的这个字符串添加进去,最后再把这个List存回到map中,最后返回map.values()即可。

代码如下:

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> map = new HashMap<String, List<String>>();
        for (String str : strs) {
            char[] temp = str.toCharArray();
            // 字典排序
            Arrays.sort(temp);
            String key = String.valueOf(temp);
            // 把map中的已经找到的异位词集合拿出来
            List<String> list = map.getOrDefault(key, new ArrayList<String>());
            list.add(str);
            // 存回到map集合汇总
            map.put(key, list);
        }
        return new ArrayList<List<String>>(map.values());
    }
}
上一篇 下一篇

猜你喜欢

热点阅读