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

【LeetCode Hot100 | 每日刷题】字母异位词分组

题目链接:49. 字母异位词分组 - 力扣(LeetCode)

题目:

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

示例 1:

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

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

解释:

  • 在 strs 中没有字符串可以通过重新排列来形成 "bat"
  • 字符串 "nat" 和 "tan" 是字母异位词,因为它们可以重新排列以形成彼此。
  • 字符串 "ate" ,"eat" 和 "tea" 是字母异位词,因为它们可以重新排列以形成彼此。

示例 2:

输入: strs = [""]

输出: [[""]]

示例 3:

输入: strs = ["a"]

输出: [["a"]]

提示:

  • 1 <= strs.length <= 104
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母

整体思路:

这道题需要用到hash表来解答,我用的是HashMap数据结构,遍历字符数组将每一个字符串排序,并以这个排序好的字符串为key,字母组成相同的字符串放入该key的map集合中,最后返回结果就行。

Java代码:

class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>>map=new HashMap<>();for(String str:strs){char[] s=str.toCharArray();Arrays.sort(s);String key=new String(s);List<String>list= map.getOrDefault(key,new ArrayList<>());list.add(str);map.put(key,list);}return new ArrayList<List<String>>(map.values());}
}

前置知识讲解: 

Java中的getOrDefault方法:

getOrDefault是Java中Map接口的一个方法,它用于从Map中获取指定键(key)对应的值(value)。如果Map中不存在该键,则返回一个预先设定的默认值。

V value = map.getOrDefault(Object key, V defaultValue);

解题步骤:

创建一个以String为key,List<String>为value的HashMap集合,遍历strs字符串数组,调用toCharArray()方法将字符串转换为字符数组,并调用Arrays的sort排序方法将字符数组排序,之后再将该字符数组转换为字符串,调用Map的getOrDefault方法 ,如果map集合中存在该key,那就返回该key对应的字符串集合,如果不存在就创建一个新的List集合,再将当前的str字符串填入返回的字符串集合或是新创建的list集合,更新一下map集合中该key的值,最后调用values()方法返回即可。

http://www.dtcms.com/a/278167.html

相关文章:

  • Can I Trust Your Answer? Visually Grounded Video Question Answering
  • C++高频知识点(十三)
  • 删除screen会话以及查看进程信息的方法
  • 魔力宝贝归来版,虚拟机搭建教程
  • 【SCI 4区推荐】《Journal of Visual Communication and Image Representation》
  • 消息中间件优化高手笔记
  • 退出登录后头像还在?这个缓存问题坑过多少前端!
  • 论文阅读:PolarFree Polarization-based Reflection-Free Imaging
  • IT岗位任职资格体系及发展通道-产品经理岗位任职标准参考
  • 《Python JSON 数据解析全指南:从基础到实战(含 jsonpath 与 Schema 验证)》
  • 九、官方人格提示词汇总(上)
  • 改进广告投入与销售额预测分析
  • CVE-2021-31201
  • 特征选择要解决什么问题
  • 算法题(174):全排列问题
  • 碳水循环(增肌、减脂)
  • AEC原理
  • 白盒测试方法深度解析:从理论到实践
  • Python协程进阶:优雅终止与异常处理详解
  • Mybatis 两级缓存可能导致的问题
  • 「小程序开发」新建页面设置启动页
  • alpinelinux的包管理
  • 力扣刷题记录(c++)09
  • ‘make_unique’ is not a member of ‘std’
  • win10下的wsl2扩充空间
  • 20250713 保存 PBM / PGM / PPM 图片 C++
  • 拼写纠错模型Noisy Channel(上)
  • 中华心法问答系统的解读(1)
  • XCZU2CG-2SFVC784I Xilinx FPGA AMD Zynq UltraScale+ MPSoC
  • if-constexpr,编译报错expected a “(“