【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.pswp.cn/web/88832.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 安装windows

目录 下载地址&#xff1a; 使用教程&#xff1a; docker compose 查看版本 测试启动 hello-world 报错1 The system cannot find the file specified&#xff1a; 检查 Docker Desktop 是否运行中 报错2HF_ENDPOINT 1. 临时解决方案&#xff08;当前终端会话有效&…

docker compose 和build

目录 docker compose 和build 的区别是什么&#xff1f; 核心差别&#xff1a; 1. docker build --platform linux/amd64 -f Dockerfile -t infiniflow/ragflow:nightly_lbg . 2. docker compose -f docker-compose-gpu.yml up -d 二者如何配合&#xff1f; 总结 docker …

裂变时刻:全球关税重构下的券商交易系统跃迁路线图(2025-2027)

——基于RWA清算、量子加密与实时非线性风控的下一代跨境基础设施核心事件锚定&#xff1a;特朗普于7月7日对14国启动分级关税制裁&#xff08;日韩25%、东南亚30%-40%、金砖关联国10%附加税&#xff09;&#xff0c;引发日元兑美元暴跌至144.47、铜价单日跳涨3.2%、散户单日交…

python爬虫初入门——基本库和写入方法

1.准备环境 python环境&#xff1a;3.10 2.常用库 1.请求库&#xff1a;实现 HTTP 请求操作 requests&#xff1a;基于 urllib 编写的&#xff0c;阻塞式 HTTP 请求库&#xff0c;发出一个请求&#xff0c;一直等待服务器响应后&#xff0c;程序才能进行下一步处理。seleni…

Sonar扫描C#代码配置

需要的工具 MSBuild、sonar-scanner-4.6.1.2450-windows、jdk1.8.0_181 下载地址&#xff1a;https://download.csdn.net/download/code12313/91315686 配置sonar的地址 一、环境变量配置 1.新建变量&#xff0c;nameSONAR_RUNNER_MSBUILD_HOME。valueD:\work\dev\dev_serve…

python 在运行时没有加载修改后的版本

陈旧的Python字节码 (.pyc 文件)&#xff1a;最常见的原因&#xff01;Python 会把你修改的 .py 文件编译成 .pyc 字节码来加速后续运行。有时&#xff0c;即使你修改了 .py 文件&#xff0c;系统可能仍然固执地加载旧的、未被删除的 .pyc 文件。1. 用“硬编码探针”强制验证# …

【会员专享数据】2013-2024年我国省市县三级逐年SO₂数值数据(Shp/Excel格式)

之前我们分享过2013-2024年全国范围逐年SO₂栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff01;该数据来源于韦晶博士、李占清教授团队发布在国家青藏高原科学数据中心网站上的中国高分辨率高质量近地表空气污染物数据集。很多小伙伴拿到数据后反馈栅格数据…

出现SSL连接错误的原因和解决方案

介绍 SSL连接错误是一种常见但关键的问题&#xff0c;这可能会阻止客户端和服务器之间的安全连接。这些错误发生在TLS握手过程失败时&#xff0c;这意味着客户端和服务器无法建立安全的HTTPS连接。这种失败可以在SSL/TLS协商过程中的任何阶段发生&#xff0c;从初始协议协议到…

vue3 el-date-picker 保存后 日期减一问题

在使用 el-date-picker&#xff08;Element UI 的日期选择器组件&#xff09;时&#xff0c;如果你发现日期在保存到后台后自动减一&#xff0c;这通常是由于时区差异或者是时间格式解析问题导致的。这里有一些可能的解决方案&#xff1a;1. 检查前端发送的日期格式确保你在前端…

什么是IP关联?跨境卖家如何有效避免IP关联?

一位深圳卖家曾管理30个亚马逊店铺账号&#xff0c;某日清晨发现所有账号被批量封禁——原因竟是平台检测到这些账号长期共享同一IP地址&#xff0c;判定为“IP关联”。而在跨境领域如亚马逊、eBay、Shopee、TikTok等平台&#xff09;&#xff0c;对于IP关联的判定都是比较严格…

Redis集群方案——哨兵机制

Redis Sentinel&#xff08;哨兵&#xff09;是Redis官方提供的高可用性(HA)解决方案&#xff0c;用于管理Redis主从架构并实现自动故障转移。一、集群结构和作用哨兵是一个分布式系统&#xff0c;由多个哨兵节点组成&#xff1a;哨兵的作用如下&#xff1a;监控&#xff1a;Se…

1.2.3_2 TCP/IP模型

在这个视频中&#xff0c;我们要探讨TCP/IP模型。对于TCP/IP模型考试的要求是这样的&#xff0c;首先我们需要记住它各个层次的名称和顺序&#xff0c;以及我们需要了解TCP/IP 模型和OSI参考模型&#xff0c;它们在设计理念上有哪些区别&#xff0c;设计理念的区别又导致了TCP/…

EVOLVEpro安装使用教程-蛋白质语言模型驱动的快速定向进化

写在前面&#xff1a;蛋白质是生命活动的基石&#xff0c;其功能和序列之间的复杂关系长期以来吸引着科学家们的关注。尽管深度突变扫描等实验方法可以解析蛋白质突变的功能影响&#xff0c;但这些技术的应用范围局限于序列空间的一小部分。近年来&#xff0c;基于蛋白质语言模…

【Linux】Rocky Linux 清华镜像源安装 GitLab

使用清华镜像源安装 GitLab 地址&#xff1a;清华镜像源 1. 搜索 gitlab&#xff0c;我们选择 gitlab-ce 社区版进行安装 2. 新建 /etc/yum.repos.d/gitlab-ce.repo&#xff0c;内容为 注意&#xff1a;el$releasever 是清华镜像源内的文件夹版本 [gitlab-ce] nameGitlab C…

【龙泽科技】新能源汽车维护与动力蓄电池检测仿真教学软件【吉利几何G6】

产品简介新能源汽车维护与动力蓄电池检测仿真教学软件是依托《全国职业院校技能大赛》“新能源汽车维修”赛项中“新能源汽车维护与动力蓄电池检测” 竞赛模块&#xff0c;自主开发的一款仿真教学软件。软件采用仿真技术对车辆进行指定维护作业&#xff0c;并对动力蓄电池总成进…

UE5多人MOBA+GAS 18、用对象池来设置小兵的队伍的生成,为小兵设置一个目标从己方出生点攻打对方出生点,优化小兵的血条UI

文章目录根据小兵队伍更换小兵的皮肤管理小兵的生成使用对象池来管理小兵的生成为小兵设置一个目标小兵生成完整代码调整一下小兵的UI根据小兵队伍更换小兵的皮肤 懒得开UE了&#xff0c;增加一个Minion类继承基类角色CCharacter // 幻雨喜欢小猫咪#pragma once#include &qu…

Clojure持久化数据结构的底层实现

文章目录一、Clojure的持久化数据结构二、向量(Vector)/Map的底层结构​1. HAMT 哈希数组映射字典树&#xff08;1&#xff09;简介&#xff08;2&#xff09;HAMT 的核心思想&#xff08;3&#xff09;HAMT 的结构​a. 基本组成​b. 树的分支因子​&#xff08;4&#xff09;H…

面试150 二叉树展开为链表

思路 思路:使用列表存储先序遍历的相关节点。然后遍历列表&#xff0c;分别获取前驱节点和当前节点,将前驱节点的左指针指向空&#xff0c;前驱节点的右指针指向当前节点。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, …

代码随想录算法训练营第十七天

目录 LeetCode.654 最大二叉树 题目链接 最大二叉树 题解 解题思路 LeetCode.617 合并二叉树 题目链接 合并二叉树 题解 解题思路 LeetCode.700 二叉搜索树中的搜索 题目链接 二叉搜索树中的搜索 题解 解题思路 解题思路 LeetCode.98 验证二叉搜索树 题目链接 验…

pycharm无法识别pip安装的包

在使用conda创建一个新的环境后&#xff0c;有些包通过pip的方式安装更方便有效&#xff0c;若在pip安装后&#xff0c;遇到该环境没有此包&#xff0c;或pycharm监测不到此包&#xff0c;通常是pip的环境指向有问题。 解决措施&#xff1a; # 首先检查当前pip的指向 which pip…