【Hash表】字母异位词分组-力扣 49 题

news2024/11/18 7:52:28

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

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

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例一:

输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]

示例二:

输入: strs = [“”]
输出: [[“”]]

示例三:

输入: strs = [“a”]
输出: [[“a”]]

解法 1:使用 HashMap 进行存储数据和 putIfAbsent 的使用

public List<List<String>> groupAnagrams(String[] strs) { // 6ms
    HashMap<String, List<String>> map = new HashMap<>();
    for (String str : strs) {
        final char[] chars = str.toCharArray();
        Arrays.sort(chars);
        String key = new String(chars);
        map.putIfAbsent(key, new ArrayList<>());
        map.get(key).add(str);
    }
    return new ArrayList<>(map.values());
}

解法 2:

computeIfAbsent 的使用

public List<List<String>> groupAnagrams(String[] strs) {
    HashMap<String, List<String>> map = new HashMap<>();
    for (String str : strs) {
        char[] chars = str.toCharArray();
        Arrays.sort(chars);
        String key = new String(chars);
        List<String> strings = map.computeIfAbsent(key, k -> new ArrayList<>());
        strings.add(str);
    }
    return new ArrayList<>(map.values());
}

解法 3

static class ArrayKey {
    int[] key = new int[26];

    public ArrayKey(String str) {
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            key[ch - 'a']++;
        }
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        ArrayKey arrayKey = (ArrayKey) o;

        return Arrays.equals(key, arrayKey.key);
    }

    @Override
    public int hashCode() {
        return Arrays.hashCode(key);
    }
}

public List<List<String>> groupAnagrams(String[] strs) {
    HashMap<ArrayKey, List<String>> map = new HashMap<>();
    for (String str : strs) {
        List<String> strings = map.computeIfAbsent(new ArrayKey(str), k -> new ArrayList<>());
        strings.add(str);
    }
    return new ArrayList<>(map.values());
}

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1036128.html

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

相关文章

Linux 文件 目录管理 链接

Linux 文件 基本属性 Linux 系统是一种典型的多用户系统&#xff0c;为了保护系统的安全性&#xff0c;不同的用户拥有不同的地位和权限。Linux 系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。 可以使用命令&#xff1a;ll 或 ls –…

vue点击容器外隐藏元素(点击非本身以外的部分隐藏元素)

如图点击蓝色边框以外任意地方隐藏蓝色边框容器&#xff08;不使用输入框的失焦事件&#xff09; 实现思路&#xff1a; 获取到dom节点然后通过其contains方法来判断点击的地方是否为其子元素或其本身 原生js获取dom跟vue的$el都可以实现 也可以通过vue的this.$refs.showBox…

MinGW相关错误

1、go编译c报错 cc1.exe: sorry, unimplemented: 64-bit mode not compiled in 参考&#xff1a;BeifangCc go编译c报错 cc1.exe: sorry, unimplemented: 64-bit mode not compiled in 说明当前gcc是32位&#xff0c;无法在当前64位机器上正常工作&#xff0c;需要更新gcc 下载…

Unity打包出来的APK文件有问题总结

一、Unity打包出来的APK文件安装失败&#xff0c;提示安装失败&#xff08;-108&#xff09;&#xff0c;或者是提示“包含病毒&#xff1a;a.gray.Bulimia.b” 有可能是遇到如上图所示的问题&#xff0c;提示安装失败&#xff08;-108&#xff09;。 有可能是遇到如上图所示的…

java入坑之Jsoup(待补充)

一、快速入门 1.1配置 <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.16.1</version> </dependency>1.2解析xml Jsoup&#xff1a;jsoup 是一款Java 的HTML解析器&#xff0c;可直接解…

Docker HarborDocker Registry

目录 介绍 Harbor和Registry的比较 搭建Dokcer Harbor Docker Registry安装 介绍 Harbor&#xff0c;是一个英文单词&#xff0c;意思是港湾&#xff0c;港湾是干什么的呢&#xff0c;就是停放货物的&#xff0c;而货物呢&#xff0c;是装在集装箱中的&#xff0c;说到集装…

台式COD快速测定仪操作说明

实验室检测水中COD指标需要消解&#xff0c;要准备好实验室多参数水质测定仪和配套智能型的消解器。所有配件准备齐全就可以进行水样的检测&#xff0c;检测流程以及操作说明如下图&#xff1a; 仪器的选定也需要根据实际的情况进行选择&#xff0c;最好选择指标可以定制的仪器…

软件测试(测试用例攻略)—写用例无压力

一、概念 测试用例的基本概念&#xff1a; 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合&#xff0c;这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素 。 主要步骤&#xff1a; 测试环境——测试步骤—…

stack栈、queue队列、list链表容器

目录 stack栈容器 stack概念和定义 stack构造函数: stack数据操作: queue队列容器 queue概念和定义 queue构造函数 queue数据操作 list链表容器 list概念和定义 list构造函数 list赋值和交换 list大小操作 list插入和删除 list数据储存 list反转和排序 stack栈…

2023年汉字小达人区级比赛倒计时2天,最新问题解答和真题练一练

今天是9月23日&#xff0c;距离2023年第十届汉字小达人区级比赛&#xff08;初赛&#xff09;的自由报名参赛时间还有2天&#xff0c;六分成长结合家长和小朋友们问的比较多的问题进行解答&#xff0c;并提供一些真题供大家练习、了解比赛题型和规则。 问题1&#xff1a;2023年…

WPS文件找回怎么做?文件恢复,4个方法!

“我平时习惯了用wps来记录一些工作心得或重点&#xff0c;不知道什么原因&#xff0c;有些很重要的文件莫名不见了&#xff0c;有什么方法可以帮我找回wps文件吗&#xff1f;” wps作一个常用的办公软件&#xff0c;有效的提高了我们的工作效率。在日常使用wps时&#xff0c;可…

学信息系统项目管理师第4版系列10_变更管理与文档管理

1. 文档管理 1.1. 分类 1.1.1. 开发文档 1.1.1.1. 描述开发过程本身 1.1.1.2. 可行性研究报告和项目任务书、需求规格说明、功能规格说明、设计规格说明&#xff08;包括程序和数据规格说明、开发计划、软件集成和测试计划、质量保证计划、安全和测试信息等&#xff09; 1…

maven中relativepath标签的含义

一 relative标签的含义 1.1 作用 这个<parent>下面的<relativePath>属性&#xff1a;parent的pom文件的路径。 relativePath 的作用是为了找到父级工程的pom.xml;因为子工程需要继承父工程的pom.xml文件中的内容。然后relativePath 标签内的值使用相对路径定位…

学习自定义SpringBoot Starter组件 (超详细的图文教程,从理论到实战)

前言&#xff1a; 通过这篇文章 你能了解SpringBoot Starter的概念和用处 并且通过实战 自定义一个SpringBoot Starter 来实现数据脱敏的功能 加油 搬砖人~ 今天不学习&#xff0c;明天变垃圾。 一、什么是SpringBoot Starter&#xff1f;用SpringBoot Starter能带来什么好处…

【04】FISCOBCOS扩容新节点

官方文档https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/tutorial/add_new_node.html 为节点生成证书并启动 每个节点都需要有一套证书来与链上的其他节点建立连接,扩容一个新节点,首先需要为其签发证书。为新节点生成私钥证书 接下来的操作都在nodes/…

MQ---第一篇

系列文章目录 文章目录 系列文章目录一、简述RabbitMQ的架构设计二、RabbitMQ如何确保消息发送 ? 消息接收?一、简述RabbitMQ的架构设计 Broker:rabbitmq的服务节点 Queue:队列,是RabbitMQ的内部对象,用于存储消息。RabbitMQ中消息只能存储在队列中。生产 者投递消息到队…

百度SEO优化的技巧大全(全面掌握SEO优化方法)

百度优化SEO内容优化介绍 为了提高网站在百度搜索结果中的排名&#xff0c;需要进行百度SEO优化&#xff0c;其中内容优化是非常重要的一环。内容优化包括网站结构、网页质量、关键词密度等方面。首先&#xff0c;网站结构应该简洁清晰&#xff0c;方便用户导航和搜索引擎爬虫…

LeetCode_二叉树_中等_1448.统计二叉树中好节点的数目

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一棵根为 root 的二叉树&#xff0c;请你返回二叉树中好节点的数目。「好节点」X 定义为&#xff1a;从根到该节点 X 所经过的节点中&#xff0c;没有任何节点的值大于 X 的值。 示例 1&#xff1a; 输…

【AI视野·今日NLP 自然语言处理论文速览 第三十九期】Fri, 22 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Fri, 22 Sep 2023 Totally 59 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models Authors Yukang Chen, Shengju Qia…

基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(八)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 这个部分是这个单元最后内容了&#xff0c;就是点击消息更多的一些代码与逻辑。 1、需要在我的个人中心里…