首页 > 编程语言 >力扣49 字母异位词分组 Java版本

力扣49 字母异位词分组 Java版本

时间:2024-09-11 20:22:30浏览次数:15  
标签:map Java String 49 strs list 力扣 key new

文章目录


题目描述

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

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

示例 1:

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

输入: strs = [“”]
输出: [[“”]]
示例 3:

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

提示:

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

题解

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        //需要归为一个list的单词都是拥有相同的字母和个数
        //所以可以考虑将单词的字母进行排序,这样就会是一模一样的单词了
        //然后再利用hashmap来存储和查找相同的单词
        Map<String, List<String>> map = new HashMap<>();
        for (int i = 0; i < strs.length; i++) {
            String s = strs[i];
            char[] chars = s.toCharArray();
            Arrays.sort(chars);
            String key = new String(chars);//这是排序完成之后的字符串,作为key
            //如果之前map中已经存储了这个字符串就提出来存这个字符串的list,在后面添加当前的就可以了
            List list = map.getOrDefault(key, new ArrayList<>());
            list.add(s);//注意:要存储字符串原来的样子,要不就会存储的都一样了
            map.put(key,list);
        }
        return new ArrayList<List<String>>(map.values());
    }
}

注意事项

起初的时候用了chars.toString()而不是String key = new String(chars)。这样是不对的,因为直接用toString()的话就会返回的是这么一个String:[class name]@[hashCode]

标签:map,Java,String,49,strs,list,力扣,key,new
From: https://blog.csdn.net/m0_47066863/article/details/142149068

相关文章

  • java计算机毕业设计民宿出租管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着旅游业的蓬勃发展和人们对个性化旅行体验的追求,民宿作为一种新兴的住宿方式,在全球范围内迅速崛起。它以其独特的文化氛围、灵活的租赁方式及亲民......
  • Java中数学类的学习
    数学类目录数学类Math类math的floor,round和ceil方法实例比较Math类Java的Math包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。Math的方法都被定义为static形式,通过Math类可以在主函数中直接调用。publicclassTest{publicst......
  • java计算机毕业设计老年人营养膳食咨询平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球人口老龄化的加速,老年人的健康问题日益成为社会关注的焦点。老年人群体由于其生理机能逐渐衰退,对营养的需求更为特殊且复杂。然而,当前社会普......
  • java计算机毕业设计模特兼职网站(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务与社交媒体的深度融合,模特行业正经历着前所未有的变革。传统模特行业依赖于线下经纪公司及行业内部推荐,效率相对较......
  • java计算机毕业设计南园餐饮预约点餐系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着生活节奏的加快与消费者对餐饮体验要求的日益提升,传统餐饮服务模式已难以满足市场需求。特别是在城市快节奏的生活环境中,顾客对于便捷、高效、个......
  • java计算机毕业设计旅游网的设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展和人们生活水平的日益提高,旅游已成为现代人休闲娱乐、增长见识的重要方式之一。然而,传统旅游方式往往受限于信息不对称、预订流......
  • --优质Java基础练习-- 采取控制台方式书写简单学生管理系统【升级版本(含注册登录功能)
    目录前言     该项目涉及的知识点项目准备 JDK编程工具Idea 需求文档-升级部分(参考黑马程序员)学生管理系统升级版需求分析登录界面用户类注册功能登录功能忘记密码验证码规则需求分析 编码新建项目-StudentManagementStudent类User类 核心方......
  • LeetCode 977.有序数组的平方 (java)
    给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100],排序后,数组变为[0,1,9,16,100]示例2:输入:nums=[-7,-3,2,3,11]输出:[4,9,9,......
  • LeetCode 704.二分查找 (java)
    给定一个 n 个元素有序的(升序)整型数组 nums和一个目标值 target ,写一个函数搜索 nums 中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例 2:......
  • 关于Java中的类和对象笔记
    什么是对象:在现实世界中,随处可见的一种事物就是对象。面向对象的特点:封装性、继承性、多态性1.1封装(思想):对象的属性和行为封装起来,载体即为类。保存类数据结构的完整性,提高了程序的可维护性。1.2继承:可以继承父类的行为和属性,其中还可以添加独特的属性及行为。可复用性强......