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

hot100 2.字母异位词分组

思路:哈希表分组。

1.题目要求:如果两个字符串从小到大排序后相等,那么这两个字符串就互为字母异位词,否则不是。

2.举例:以示例1为例。输入:strs = [eat,tea,tan,ate,nat,bat]。

(1)每个字符串各自排序,得到aet,aet,ant,aet,ant,abt。

(2)把排序后相同的字符串分到同一组:

——排序后是aet的字符串,排序前是eat,tea,ate。

——排序后是ant的字符串,排序前是tan,nat。

——排序后是abt的字符串,排序前是bat。

(3)因此,示例1返回的二维列表中,包含三个列表,分别为:[eat,tea,ate],[tan,nat],[bat],三个列表的顺序随意。

附代码:

class Solution { public List<List<String>> groupAnagrams(String[] strs) { Map<String,List<String>> map = new HashMap<>(); for(int i = 0;i < strs.length;i++){ //把字符串数组strs中的每一个字符串都转换为字符数组chars char[] chars = strs[i].toCharArray(); //把每一个chars都按字母顺序排序 Arrays.sort(chars); //将排序后的字符数组重新组合成字符串,作为HashMap的键 //toString返回的是数组对象的哈希地址,new String(chars)才是使用String的构造函数从字符数组创建一个新的字符串 String key = new String(chars); //如果键不存在,就创建新列表 if(!map.containsKey(key)){ map.put(key,new ArrayList<String>()); } //获得当前键对应的列表 //将当前字符串添加到当前字符串列表中 map.get(key).add(strs[i]); } //将哈希表的所有的值收集起来,组成一个新的列表并返回 return new ArrayList(map.values()); } }
http://www.cnnetsun.cn/news/68653.html

相关文章:

  • R语言Cox回归避坑指南(临床数据建模常见错误TOP5)
  • 是德 N9041B UXA 频谱分析仪在真空环境完成卫星信号分析
  • 用是德DSOX1204A示波器快速捕捉与调试信号的实用指南
  • 连接器EMC测试不过关?5步定位干扰源头,快速通过认证
  • 为什么90%的物联网项目卡在部署阶段?真相令人震惊
  • 你还在用线性回归预测产量?R语言随机森林模型已全面超越
  • Laravel 13发布后必须掌握的技能:多模态任务队列的7种高级用法
  • some 知识点 knowledge
  • Gson和Jackson是怎么解决泛型实例化的?源码级剖析告诉你答案
  • 重新发现深圳,找个咖啡/羽毛球搭子一起探索城市的AB面
  • 请求拦截不再难,Symfony 8拦截器实现原理与最佳实践全解析
  • RAG文本分块策略:优化LLM的知识访问效率
  • 桌面那么点大,性能它偏要狂
  • 基于51单片机的智能水表系统设计
  • 基于单片机的交通控制系统
  • 永磁同步电机PMSM 5 - 7次谐波注入降低转矩脉动实践
  • 万字长文梳理如何扩展大语言模型的上下文长度:算法原理、实现方法与适用场景(RoPE、YaRN、优化Attention、RAG等)
  • 特征提取+概率神经网络 PNN 的轴承信号故障诊断模型
  • 单元测试基础知识,面试用得上...
  • 美国国务院恢复 Times New Roman 字体
  • 【万字长文】LLM+KG:大模型与知识图谱融合的黄金时代,技术前景与实现路径全解析!
  • ionet 25.2 发布
  • 谁还不知道!2025年这4款免费AI写歌工具
  • OpenNJet v3.3.1.3
  • 续约上港!张琳芃 400 万冲第 12 冠
  • 2023A卷,区块链文件转储系统
  • 动态图表自由切换,R Shiny多输入控件协同设计全解析
  • 基于单片机的视力保护器设计
  • WebSocket 协议详解:ws 和 wss 的区别与应用
  • 【Matlab】基于图像处理的苹果质量检测分级系统