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

【力扣热题100】哈希——字母异位词分组

题目

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
解释:
在 strs 中没有字符串可以通过重新排列来形成 “bat”。
字符串 “nat” 和 “tan” 是字母异位词,因为它们可以重新排列以形成彼此。
字符串 “ate” ,“eat” 和 “tea” 是字母异位词,因为它们可以重新排列以形成彼此。

链接:[https://leetcode.cn/problems/group-anagrams/description/?envType=study-plan-v2&envId=top-100-liked)

思路

如果两个字符串,每个字母出现的次数是一样的,那么这两个字符串就是字母异位词。每个字符串中只有小写字母,那么可以有一个26位长度的数组arr表示,其中arr[i]的值代表字符串中,字符a+i出现的次数(eg:如果字符串中e出现了10次,那么arr[e-a]arr[4]=10)。将每个字符串对应的数组转成String(不能直接数字转,需要位置对应的字母+数字),因此可以设置一个Map<String, List<String>>,其中key为字符串对应的数组转成String,value则是字符串列表。综上,是字母异位词的字符串对应的key相同的,因此把Map的Value转成List即可。

备注

字符串对应的数组转成String(不能直接数字转,需要位置对应的字母+数字)是因为比如[“bdddddddddd”,“bbbbbbbbbbc”],第一个是1个b、10个d,第二个10个b,1个c。对应的数组分别为[0,1,0,10,0……],[0,10,1,0,0,……],直接转均为010100……。因此加上对应的字符,变为b1d10和b10c1

题解

class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String, List<String>> map = new HashMap<>();for (int i = 0; i < strs.length; i++) {int[] counts = new int[26];for (char c : strs[i].toCharArray()) {counts[c - 'a']++;}StringBuffer sb = new StringBuffer();for (int j = 0; j < 26; j++) {if (counts[j] != 0) {sb.append((char) ('a' + j));sb.append(counts[j]);}}List<String> index = map.getOrDefault(sb.toString(), new ArrayList<>());index.add(strs[i]);map.put(sb.toString(), index);}return new ArrayList<List<String>>(map.values());}
}
http://www.xdnf.cn/news/1216369.html

相关文章:

  • 20250730在荣品的PRO-RK3566开发板的Android13下调通敦泰的FT8206触控芯片【I2C的挂载】
  • colima 修改镜像源为国内源
  • 02 基于sklearn的机械学习-KNN算法、模型选择与调优(交叉验证、朴素贝叶斯算法、拉普拉斯平滑)、决策树(信息增益、基尼指数)、随机森林
  • MacTex+Vscode数学建模排版
  • VUE -- 基础知识讲解(二)
  • 计算机网络基础(二) --- TCP/IP网络结构(应用层)
  • 代码随想录算法训练营第三十六天
  • RHCA学习概述
  • Python 程序设计讲义(45):组合数据类型——集合类型:集合的常用操作
  • List 接口
  • nav2--安装/教程
  • Linux 系统进程管理与计划任务详解
  • 2025 年 NOI 最后一题题解
  • ORACLE的表维护
  • 学习Markdown
  • Python读取获取波形图波谷/波峰
  • 开发避坑短篇(9):解决升级Vue3后slot attributes废弃警告
  • Python Day19 时间模块 和 json模块 及例题分析
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
  • RNN、LSTM、Transformer推荐博文
  • USRP捕获手机/路由器数据传输信号波形(上)
  • HTML应用指南:利用POST请求获取全国公牛门店位置信息
  • Unity UI的未来之路:从UGUI到UI Toolkit的架构演进与特性剖析(5)
  • Python 使用pandas库实现Excel字典码表对照自动化处理
  • macOS安装配置Unbound DNS完整指南
  • 学习日志22 python
  • docker 安装elasticsearch
  • QT笔记--》QMenu
  • CSS 工作原理
  • Java 笔记 封装(Encapsulation)