当前位置: 首页 > 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.dtcms.com/a/305679.html

相关文章:

  • Axure下拉菜单:从基础交互到高保真元件库应用
  • 基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(二)
  • jmeter--While控制器--循环直到接口响应符合条件
  • 基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(三)
  • GitOps: Tekton + ArgoCD
  • python反爬:一文掌握 undetected-chromedriver 的详细使用(可通过机器人验证)
  • MacTex+Vscode数学建模排版
  • LLM—— 基于 MCP 协议(Streamable HTTP 模式)的工具调用实践
  • 爱车生活汽车GPS定位器:智能监控与安全驾驶的守护者
  • chukonu阅读笔记(2)
  • 开源 Arkts 鸿蒙应用 开发(十三)音频--MP3播放
  • jmeter实战案例
  • day21-Excel文件解析
  • cpp c++面试常考算法题汇总
  • 云计算:一场关于“数字水电煤”的革命与未来
  • 机器学习之线性回归的入门学习
  • 【翻译】Label Studio——开源标注工具README.md
  • 如何轻松将 Windows 10 或 11 PC恢复出厂设置
  • 数据集:机器学习的基石
  • 服务器与电脑主机的区别,普通电脑可以当作服务器用吗?
  • 2025年AI安全威胁全景:从对抗性机器学习到量子计算挑战
  • winsock socket通讯为什么UDP服务器无法获取客户端IP?
  • QML 基础语法与对象模型
  • 河流水库水雨情监测仪:守护江河安澜的 “智能耳目”
  • Charles中文教程 高效抓包与API接口调试实战全指南
  • 看涨虚值期权卖方亏损风险有多大?
  • 《SAM:Segment Anything》论文精读笔记
  • Java集合进阶(更新中)
  • MP1400GC-Z一款内置功率 MOSFET ,DC-DC 负电源变换器可以实现 600mA 连续输出电流MP1400
  • WSL2搭建基于Docker的ESP32开发环境