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

LeetCode(Hot.2)—— 49.字符异位词分组题解

Problem: 49. 字母异位词分组

字母异位词的定义是:两个单词的字母组成一样,但顺序可以不同,比如 eat、tea 和 ate 就是一个组的。

思路

将每个字符串按字母排序,把排序后的字符串作为 key,相同 key 的放在一个 list 中,最终将这些 list 返回。

解题过程

  1. 核心思想:

    • 字母异位词排序后是相同的字符串。

    • 我们可以将每个字符串排序后,作为 map 的 key,原始字符串作为 value。

    • 如果多个字符串排序后结果一致,说明它们属于同一个“异位词”组。

  2. 实现方式:

(1)使用一个 HashMap<String, List>:

  • key:排序后的字符串(唯一标识一组异位词)。
  • value:原始字符串组成的列表。

(2)遍历输入数组 strs:

  • 每个字符串转为字符数组并排序。
  • 把排序后的字符串作为 key,根据 key 获取已有的 list,没有则新建。
  • 把原字符串添加到对应的 list 中。

(3)最后返回 map 中所有的 value(即每组异位词)。

复杂度

  • 时间复杂度:O(n * k log k)

    • 是字符串个数
    • 是字符串最大长度(每次排序耗时 O(k log k))
  • 空间复杂度:O(n * k)

    • 用于存储结果列表和中间 map

Code

class Solution {public List<List<String>> groupAnagrams(String[] strs) {HashMap<String, List<String>> map = new HashMap<>();for(String str : strs) {// 1. 将每个单词转成 char 数组,并且进行排序char[] temp = str.toCharArray();Arrays.sort(temp);String key = new String(temp);// 2. 排序后的值作为 key,原始值作为 List 集合中的 value。相同的 key 存在同一个 List<String> 中List<String> list = map.getOrDefault(key, new ArrayList<>());list.add(str);map.put(key, list);}return new ArrayList<>(map.values());}
}
http://www.dtcms.com/a/142392.html

相关文章:

  • 【win 1】win 右键菜单添加 idea pycharm vscode trae 打开文件夹
  • 笔试专题(十一)
  • 什么编程语言市场竞争小,但还易学?
  • Docker应用端口查看器docker-port-viewer
  • 基于springboot的老年医疗保健系统
  • HTML5 应用程序缓存:原理、实践与演进
  • 【Vue】模板语法与指令
  • 图灵奖得主LeCun:DeepSeek开源在产品层是一种竞争,但在基础方法层更像是一种合作;新一代AI将情感化
  • 【Linux】线程ID、线程管理、与线程互斥
  • 【概率论】条件期望
  • rebase和merge的区别
  • 【图片识别改名工具】图片文件区域OCR识别并自动重命名,批量识别指定区域根据指定识别文字批量改名,基于WPF和阿里云的技术方式实现
  • Ethan独立开发产品日报 | 2025-04-18
  • 汽车故障诊断工作原理:从需求到AUTOSAR诊断模块协作的浅析
  • Android 热点二维码简单示例
  • 0801ajax_mock-网络ajax请求1-react-仿低代码平台项目
  • 论文阅读:2024 ICLR Workshop. A STRONGREJECT for Empty Jailbreaks
  • 每日两道leetcode
  • SRS流媒体服务器
  • 学习笔记十八——Rust 封装
  • 【UniApp】Vue2 scss 预编译器默认已由 node-sass 更换为 dart-sass
  • NFC碰一碰发视频系统OEM定制,源码搭建注意事项
  • 【FreeRTOS进阶】优先级翻转现象详解及解决方案
  • React-useRef
  • 【Redis】从单机架构到分布式,回溯架构的成长设计美学
  • 数据驱动增长:大数据与营销自动化的结合之道
  • 学习设计模式《三》——适配器模式
  • Java 并发性能优化:线程池的最佳实践
  • 【上海大学计算机系统结构实验报告】多机环境下MPI并行编程
  • Ai Agent 在生活领域的深度应用与使用指南