【hashmap】【将排序之后的字符串作为哈希表的键】【获取 HashMap 中所有值的集合】Leetcode 49 字母异位词分组

【hashmap】【将排序之后的字符串作为哈希表的键】【获取 HashMap 中所有值的集合】Leetcode 49 字母异位词分组

    • 解法1 将排序之后的字符串作为哈希表的键
    • 解法2 在解法一的基础上加入了getOrDefault

---------------🎈🎈题目链接🎈🎈-------------------

在这里插入图片描述

在Java中,数组是不可用作HashMap的键的,因为数组的hashCode()方法不会返回数组元素的内容的哈希码。所以应该使用字符串作为键。

解法1 将排序之后的字符串作为哈希表的键

⭐️由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。

字符串转化为字符数组:char[ ] mychar = str.toCharArray()
字符数组转化为字符串:String mystring = new String(mychar)
字符串排序:Arrays.sort( )
获取 HashMap 中所有值的集合myhashmap.values()
直接返回 return new ArrayList<>(myhashmap.values())

在这里插入图片描述

class Solution {public List<List<String>> groupAnagrams(String[] strs) {HashMap<String, List<String>> myhashmap = new HashMap<>();for(String str:strs){char[] chararry = str.toCharArray();Arrays.sort(chararry); // 排序String strtemp = new String(chararry); // 字符数组再次转化为字符串// key是排序后的strtemp  value就是最后要返回的列表if(myhashmap.containsKey(strtemp)){ // 如果包含 value就在已有列表基础上添加当前的strList<String> temp = myhashmap.get(strtemp);temp.add(str);myhashmap.put(strtemp,temp);} else{  // 如果不包含,那就向hashmap中添加key valueList<String> temp = new ArrayList<>();temp.add(str);myhashmap.put(strtemp, temp);}}return new ArrayList<>(myhashmap.values());}
}     

解法2 在解法一的基础上加入了getOrDefault

class Solution {public List<List<String>> groupAnagrams(String[] strs) {// 在Java中,数组是不可用作HashMap的键的,因为数组的hashCode()方法不会返回数组元素的内容的哈希码。所以应该使用字符串作为键。HashMap<String, List<String>> myhashmap = new HashMap<>();for(String str:strs){char[] chararry = str.toCharArray();Arrays.sort(chararry); // 排序String strtemp = new String(chararry); // 字符数组再次转化为字符串// key是排序后的strtemp  value就是最后要返回的列表List<String> list = myhashmap.getOrDefault(strtemp, new ArrayList<String>()); // 取出结果的列表list.add(str); // 添加str到列表中myhashmap.put(strtemp,list);}return new ArrayList<>(myhashmap.values());}
}

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

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

相关文章

从零开始手写mmo游戏从框架到爆炸(二十二)— 战斗系统三

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 目录 地图设定 战斗引擎 服务端的BattleHandler 客户端的相关handler 战斗场景展示 执行效果 文接上一章。我们把战斗系统demo应用到实际的项目中来。在第十九章&#xf…

AI对话系统app开源

支持对接gpt&#xff0c;阿里云&#xff0c;腾讯云 具体看截图 后端环境&#xff1a;PHP7.4MySQL5.6 软件&#xff1a;uniapp 废话不多说直接上抗揍云链接&#xff1a; https://mny.lanzout.com/iKFRY1o1zusf 部署教程请看源码内的【使用教程】文档 欢迎各位转载该帖/源码

智慧公厕是什么?智慧公厕意义何在

随着城市化进程的加速&#xff0c;公厕成为城市管理中不容忽视的一环。智慧公厕传统的公厕管理方式已经无法满足当今社会的需求&#xff0c;因此智慧公厕的出现成为解决问题的利器。什么是智慧公厕&#xff1f;智慧公厕是实现公共厕所信息化、数字化、智慧化全方位管理与服务的…

啤酒:精酿啤酒与烧烤的热烈碰撞

在夏日的傍晚&#xff0c;烧烤与啤酒总是绝配。当Fendi Club啤酒遇上烧烤&#xff0c;它们将为我们带来一场热烈的美味碰撞。 Fendi Club啤酒&#xff0c;以其醇厚的口感和淡淡的麦芽香气而著称。这款啤酒在酿造过程中采用了特别的工艺&#xff0c;使得酒体呈现出诱人的金黄色&…

F2图例封装 - Bar

基于vue3 和 F2 3.5.0 <template><div :style"{minHeight: ${height}px,width: 100% }" ref"container"><canvas v-show"showChart" :id"chartId" class"chart-canval"></canvas><empty-box v-…

零感佩戴的开放式耳机,音质悦耳更耐听,西圣Air体验

每天都用蓝牙耳机的朋友应该不少&#xff0c;我平时也经常戴&#xff0c;不过最近我用的不是常规的入耳式耳机&#xff0c;因为它佩戴不舒适&#xff0c;戴久了耳朵特别难受。所以现在我换上了开放式耳机&#xff0c;这种耳机叫做OWS&#xff0c;我的这款是西圣Air&#xff0c;…

查看mysql数据库的版本

要查看MySQL数据库的版本&#xff0c;可以使用以下几种方法&#xff1a; 命令行&#xff08;已连接到MySQL服务器&#xff09;&#xff1a; 登录到MySQL服务器后&#xff0c;在MySQL提示符下执行&#xff1a; mysql> SELECT VERSION(); 或者&#xff0c;也可以执行 STATUS; …

Java异常梳理总结

目录 什么是异常 , 异常的分类 ? 异常的基本概念 什么是Throwable ? Throwable 类常用方法有哪些&#xff1f; Exception 和 Error 有什么区别&#xff1f; 运行时异常与一般异常有什么区别&#xff1f; 常见的RuntimeException 有哪些 ? NoClassDefFoundError 和 C…

面试总结之JVM入门

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;你为什么要学习JVM&#xff1f;&#x1f380;JVM的作用 &#x1f380;JVM的构成&#xff08;5大类&#xff09;&#x1f3e8;1.类加载系统&#x1f415;类什么时候会被加…

《业务建模驱动的企业架构转型白皮书》

当前&#xff0c;我国金融等国民经济重点行业和企业的数字化转型&#xff0c;仍存在战略落地难、业务技术协同难以及投入产出匹配难等问题&#xff0c;亟需通过实施企业架构&#xff0c;从顶层设计出发&#xff0c;制定符合自身需要的转型战略&#xff1b;从全局视角出发&#…

人工智能产生的幻觉问题真的能被看作是创造力的另一种表现形式吗?

OpenAI的首席执行官山姆奥特曼&#xff08;Sam Altman&#xff09;曾声称&#xff0c;人工智能产生的“幻觉”其实未尝不是一件好事&#xff0c;因为实际上GPT的优势正在于其非凡的创造力。 目录 一.幻觉问题的概念 二.幻觉产生的原因 三.幻觉的分类 四.减轻AI的幻觉问题到…

Windows部署WebDAV服务并映射到本地盘符实现公网访问本地存储文件

文章目录 前言1. 安装IIS必要WebDav组件2. 客户端测试3. 使用cpolar内网穿透&#xff0c;将WebDav服务暴露在公网3.1 安装cpolar内网穿透3.2 配置WebDav公网访问地址 4. 映射本地盘符访问 前言 在Windows上如何搭建WebDav&#xff0c;并且结合cpolar的内网穿透工具实现在公网访…

Qt QWidget 简约美观的加载动画 第四季

&#x1f60a; 第四季来啦 &#x1f60a; 效果如下: 只有三个文件,可以直接编译运行的 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QVBoxLayout> #include <QGridLayout> int main(int argc, char *argv[]) …

matlab 三质量-弹簧系统受激振力

1、内容简介 略 44-可以交流、咨询、答疑 建立系统运动方程&#xff0c;研究固有频率和对应主振型 2、内容说明 略 三质量&#xff0d;弹簧系统受激振力&#xff0c;并不考虑各自的阻尼。建立系统运动方程。 解&#xff1a;由于阻尼对固有频率没有影响&#xff0c;故本文不…

【蓝桥杯省赛真题25】python密室逃脱游戏 青少年组蓝桥杯比赛python编程省赛真题解析

目录 python密室逃脱游戏 一、题目要求 1、编程实现 2、输入输出

【深入理解设计模式】代理设计模式

代理设计模式&#xff1a; 代理设计模式是一种结构型设计模式&#xff0c;它允许你提供一个替代物或占位符来控制对其他对象的访问。在代理模式中&#xff0c;一个类代表另一个类的功能。这种类型的设计模式属于结构型模式&#xff0c;因为该模式涉及类和对象的组合。 概述 …

常见集合框架底层原理

常见集合框架底层原理 常见的集合有哪些 Java集合类主要由两个接口Collection和Map派生出来的&#xff0c;Collection有三个子接口: List、 Set、Queue List代表了有序可重复集合&#xff0c;可直接根据元素的索引来访问Set代表了无序集合&#xff0c;只能根据元素本身来访问…

代码随想录算法训练营第62天 | 739.每日温度 496.下一个更大元素I

每日温度 如果我们单纯的遍历数组&#xff0c;我们不知道当前元素是否比之前的元素大&#xff0c;所以需要维护一个容器来记录遍历过的元素。 什么时候用单调栈&#xff1f;通常是一维数组&#xff0c;要寻找任一个元素的右边或左边第一个比自己大或小的元素的位置。时间复杂度…

Linux-实用操作(黑马学习笔记)

各类小技巧&#xff08;快捷键&#xff09; ctrl c 强制停止 ● Linux某些程序的运行&#xff0c;如果想要强制停止它&#xff0c;可以使用快捷键ctrl c ● 命令输入错误&#xff0c;也可以通过快捷键ctrl c&#xff0c;退出当前输入&#xff0c;重新输入 ctrl d 退出或登…