当前位置: 首页 > article >正文

哈希-字母异位词分组

字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

输入:字符串数组strs
输出:二维列表
思路:计数法,使用有效的字母异位词对每一个字符串进行操作,得到
的整型数组进行比较,如果相同则表示是字母异位词,然后将其整合在一起,使用hash表键值映射,详细请看Java数据结构—HashMap(哈希表及其基本操作)(含hashset)

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        //定义哈希表
        Map<String,List<String>> map = new HashMap<>();
        //循环strs
        for(String str : strs){
            //定义长度为26的整型数组用来存储每个字符出现的次数
            int[] counts = new int[26];
            //遍历字符串
            for(char s : str.toCharArray()){
                counts[s - 'a']++;
            }
            //拼接字符串,作为哈希表的键
            StringBuilder sb = new StringBuilder();
            for(int i = 0;i < 26;i++){
                if(counts[i] != 0){
                    sb.append((char)('a' + i)).append(counts[i]);
             }
         }
            //转换为String
            String key = sb.toString();
            //这个还在循环里面
            List<String> list = map.getOrDefault(key,new ArrayList<>());
            list.add(str);
            //把键值对存入map
            map.put(key,list);
        }
        //返回所有的哈希表中的值
         return new ArrayList<>(map.values());
    }
}

这里不能直接使用

return map.values();

Line 30: error: incompatible types: Collection<List<String>> cannot be converted to List<List<String>>
         return map.values();

虽然 map.values() 返回的集合已经包含了所有值,但它是一个 Collection 类型,而不是 List 或 ArrayList。为了满足特定需求(如随机访问、封装性等),我们需要将其转换为 ArrayList。因此,代码中使用 new ArrayList<>(map.values()) 是一种更安全、更灵活的做法。


http://www.kler.cn/a/548688.html

相关文章:

  • Vue 3 30天精进之旅:Day 23 - 性能优化
  • 【python】连接Jira获取token以及jira对象
  • domain 网络安全
  • 【JavaWeb学习Day16】
  • 为什么要选择3D机器视觉检测
  • 二叉搜索树的实现(C++)
  • http基础一
  • 电子电气架构 --- 机器学习推动车载雷达的发展
  • 【第12章:深度学习与伦理、隐私—12.3 深度学习模型的透明性与可解释性提升策略】
  • typescript快速入门之安装与运行
  • perplexity新增R1、o3-mini、Gemini 2.0 flash模型
  • 如何通过AI让PPT制作更轻松:从AI生成PPT到一键智能生成
  • 分段线性插值
  • Halcon相机标定
  • C++ Primer 函数匹配
  • 【Linux】--- 基础开发工具之makefile、git、gdb
  • Python 面向对象的三大特征
  • 4.buuctf [SWPU2019]Web1及知识点
  • matlab飞行姿态pid控制
  • Ubuntu 下 nginx-1.24.0 源码分析 -ngx_ssl_error 函数