美文网首页
哈希表 06

哈希表 06

作者: 眼若繁星丶 | 来源:发表于2020-12-14 19:42 被阅读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());
        }
    }
    

    相关文章

      网友评论

          本文标题:哈希表 06

          本文链接:https://www.haomeiwen.com/subject/ullbgktx.html