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

力扣算法Hot100——49. 字母异位词分组

在这里插入图片描述
异位词的题,都考虑计算 26 个字母出现的数量,然后进行比较,字母数量出现相同的一定是异位词。

  • 外层循环循环字符串数组中的每一个字符串,在内层进行其他操作
  • 内层首先计算字符串的 26 个字母的出现的数量,并用一个数组存储
  • 将数组中不为 0 的代表的字符拼接在一起,作为哈希表的键
  • put 操作
  • 返回字符串数组,内容为哈希表的值
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        // 哈希表,存储最终的结果,其值就是结果
        Map<String, List<String>> map  = new HashMap();

        // 遍历strs
        for(String str : strs){

            // 创建数组记录str中每个字母的数量
            int[] counts = new int[26];
            for(int i = 0; i < str.length(); i++){
                 counts[str.charAt(i) - 'a']++;
            }

            // 创建可变字符串保存counts中拼接后的字符串
            StringBuffer sb = new StringBuffer();
            for(int i = 0; i < 26; i++){
                if(counts[i] != 0){
                    sb.append(i + 'a');
                    sb.append(counts[i]);
                }

            }
            // 转换为普通的字符串
            String key = sb.toString();

            // 从 map 中获取指定 key 对应的 List<String>,如果 key 不存在,则返回一个新的空 ArrayList<String> 作为默认值。
            List<String> list = map.getOrDefault(key, new ArrayList<String>());
            list.add(str);
            map.put(key, list);
        }
        return new ArrayList<List<String>>(map.values());
    }
}

相关文章:

  • DCDC36V同步降压 输出可调 2A电流恒压芯片SL1588H 替换LV3842
  • 阿里云服务器环境部署 四 MySQL主从配置
  • C中常用方法总结
  • 使用粘贴控件
  • Linux(Ubuntu)系统安装Docker与Docker Compose完整指南
  • Linux权限管理详解
  • 数据结构与算法:最小生成树
  • PakePlus支持将vue/react等项目打包为跨平台桌面软件了
  • 高并发内存池
  • visual studio 中导入 benchmark
  • TouchSocket TcpService:构建高性能Tcp服务的终极利器
  • 某网关管理软件 9-12ping.php 命令执行漏洞(CVE-2025-1448)
  • YOLOv5
  • 基于 Milvus 和 BiomedBERT 的医学文献智能搜索系统
  • 如何通过iPaaS集成平台快速配置协议接口
  • vscode 源代码管理
  • Windows系统本地部署OpenManus对接Ollama调用本地AI大模型
  • Day 3
  • 快速入手-基于Django的主子表间操作mysql(五)
  • 学习111
  • 看纪录片抵学分,贺桂梅:纪录片是对抗低质碎片信息的好媒介
  • 庄语乐︱宋代历史是被“塑造”出来的吗?
  • 中行一季度净赚超543亿降2.9%,利息净收入降逾4%
  • 文化润疆|让新疆青少年成为“小小博物家”
  • 观察|英国航母再次部署印太,“高桅行动”也是“高危行动”
  • 财政部下达农业生产防灾救灾资金3.76亿元,支持黄淮海等地抗旱保春播