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

LeetCode 49. Group Anagrams 题解

LeetCode 49. Group Anagrams 题解

题目描述

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

字母异位词是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

输入: strs = [""] 输出: [[""]]

示例 3:

输入: strs = ["a"] 输出: [["a"]]

解题思路

哈希表:

  • 以排序后的字符串作为键,将字母异位词分组
  • 遍历字符串数组,将每个字符串排序后作为键,原字符串作为值

代码实现

def groupAnagrams(strs): from collections import defaultdict anagrams = defaultdict(list) for s in strs: # 排序后的字符串作为键 sorted_str = ''.join(sorted(s)) anagrams[sorted_str].append(s) return list(anagrams.values())

复杂度分析

  • 时间复杂度:O(n × k log k),其中 n 是字符串数量,k 是字符串长度
  • 空间复杂度:O(n × k)

优化:字符计数作为键

def groupAnagrams(strs): from collections import defaultdict anagrams = defaultdict(list) for s in strs: # 字符计数作为键 count = [0] * 26 for c in s: count[ord(c) - ord('a')] += 1 anagrams[tuple(count)].append(s) return list(anagrams.values())

测试案例

# 测试案例 1 assert groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]) == [["eat", "tea", "ate"], ["tan", "nat"], ["bat"]] # 测试案例 2 assert groupAnagrams([""]) == [[""]] # 测试案例 3 assert groupAnagrams(["a"]) == [["a"]]

总结

本题是字符串处理和哈希表的经典应用。

关键点:

  • 字母异位词的特征:排序后相同
  • 哈希表分组
  • 优化:使用字符计数作为键

通过本题可以深入理解哈希表在分组问题中的应用。

http://www.jsqmd.com/news/555239/

相关文章:

  • 解决数字记忆碎片化的创新方案:GetQzonehistory让社交数据成为可触摸的时光胶囊
  • 智能提取与效率革命:extract-video-ppt深度技术指南
  • TerosHDL:现代硬件设计的高效生产力工具集
  • 2026反转:被看不起的C语言,开发者时薪竟比Python高2-3倍
  • CLIP ViT-H-14图像相似度计算案例:同一建筑不同季节/天气/角度匹配
  • 小白友好!Z-Image-Turbo文生图镜像详细使用教程
  • Android Q 图形系统探秘:从 View 到 Surface,一次点击背后的跨进程之旅
  • 终端更新完全指南:从基础更新到前沿尝鲜
  • 终极命令行数据库管理神器:3分钟快速上手 dblab
  • 2024年鲲鹏云技术实战:从应用移植到性能调优全流程解析
  • AI 开发实战:技术支持流程里,怎么让 AI 真正减负
  • 告别手动队列!ROS2多传感器同步新方案:message_filters与rclcpp的完美配合
  • Keil4 STC15浮点运算踩坑实录:如何避免数据类型转换导致的诡异错误
  • 北京高端腕表真假鉴定全解析:从百达翡丽到理查德米勒的鉴真科学与六大城市联保 - 时光修表匠
  • Open InterpreterERP对接:库存更新脚本自动化部署
  • 字体解决方案:PingFangSC跨平台中文字体技术架构与实施指南
  • DamoFD-0.5G与YOLOv5对比测试:轻量级人脸检测模型性能实测
  • 4步掌握AI图像修复新工具:IOPaint从入门到精通指南
  • 2026年摄影摄像GEO优化服务商深度测评:从技术到效果的实用选型指南 - 小白条111
  • 深入解析CANopen协议:从基础概念到实战应用
  • ROS Noetic/Nav2下,手把手教你用CMake配置Qt5 RViz插件(避坑qmake依赖)
  • 解锁智能监控:提升网页变化追踪效率的完整指南
  • 终极指南:如何在5分钟内构建完全离线的AI文档生成系统 [特殊字符]
  • 3000+戴森球计划蓝图库:零门槛实现太空工厂效率革命
  • 高性能异步社交媒体数据采集SDK架构设计与实现指南
  • 游戏电竞护航陪玩源码系统小程序:全开源商用体系 重构电竞陪玩行业增长新范式 - 壹软科技
  • 告别配置迷茫!手把手教你用EB Tresos配置Infineon TC3xx的ADC模块(MCAL实战)
  • 别再只会用ShiroScan了!手把手教你从零复现Shiro-550漏洞(附Docker靶场+完整Payload生成)
  • 从实验室到工业界:盘点SLAM技术落地的5个关键突破点
  • Calculatar相关操作