力扣刷题49 字母 异位词分组

news2024/11/27 15:29:41

目录

  • 题目描述
  • 代码实现
    • 基本实现
    • 优化代码
  • 基础知识回溯
    • 集合
  • 参考

题目描述

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

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

示例 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] 仅包含小写字母
Related Topics
数组
哈希表
字符串
排序

代码实现

基本实现

package leetcode.editor.repractice;


import java.util.*;

public class Q49 {
    public static void main(String[] args) {
        Solution solution = new Q49().new Solution();
        String[] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};
        System.out.println(solution.groupAnagrams1(strs));
    }


    class Solution {
        public List<List<String>> groupAnagrams1(String[] strs) {
            Map<String, List<String>> map = new HashMap<String, List<String>>(); //map记录字母相同对应的异位词,用List作为值
            for(String str : strs){
                char[] array = str.toCharArray(); //字符串转数组方便后续排序
                Arrays.sort(array);               //异位词排序后返回的都是一样的,eat,tea排序后都为aet
                String key = new String(array);   //key表示异位词排序后的值,比如 aet
                List<String> list= map.getOrDefault(key,new ArrayList<String>()); //getOrDefault若存在key返回对应的值(List),不存在则返回一个空List
                list.add(str);                     //key存不在都需要记录strs每一个字符串,然后加入到map中。比如 aet已经有了 tea就加aet的list后面。没有就新建一个list,当前的是list第一个元素
                map.put(key,list);                 //将list放入对应的key
            }
            return new ArrayList<> (map.values()); //返回一个ArrayList,值为map各个key对应的list


        }
    }
}

优化代码

基础知识回溯

在这里插入图片描述
Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:

接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序,这些算法实现了多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

除了集合,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们完全整合在集合中。

集合

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

ArrayList 继承了 AbstractList ,并实现了 List 接口。
在这里插入图片描述

参考

https://www.runoob.com/java/java-collections.html
菜鸟教程

【leetcode-字符串篇 49题 字母异位词分组】 https://www.bilibili.com/video/BV1fW4y1t7pq/?share_source=copy_web&vd_source=fe6c23f6f1353ed1eff5d5e866171572

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

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

相关文章

19|返璞归真:王维佛系建议,万事不如吃好睡好

好诗相伴&#xff0c;千金不换。你好&#xff0c;我是天博。 今天我们的主题仍然是“见自己”。其实&#xff0c;诗词里并不是只有诗情画意的春花秋月&#xff0c;也充满了实实在在的人间烟火。这些现实的生活对我们平常人来说&#xff0c;往往比春花秋月更有借鉴意义。我们今…

基于Java+SpringBoot+Vue前后端分离在线考试系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

蝶形运算法

蝶形运算法是一种基于FFT&#xff08;Fast Fourier Transform&#xff09;算法的计算方法&#xff0c;其基本思想是将长度为N的DFT分解成若干个长度为N/2的DFT计算&#xff0c;并通过不断的合并操作得到最终的结果。该算法也称为“蝴蝶算法”&#xff0c;因为它的计算过程中需要…

未加载Qt6Core.pdb

编译代码发现未加载.pdb。 问题是Qt6的bin目录下也没有.pdb文件啊&#xff1f; 有两种方法&#xff0c;一是把Qt路径放到环境变量下&#xff0c;这样系统就能找到Qt6需要的依赖项。 二是在生成目录下找到编译好的.exe文件&#xff0c;然后调用windeployqt.exe为其生成依赖项&…

通用策略06丨横截面因子在期货中的应用(2)

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 大家好&#xff0c;今天为大家带来2023年度通用系列的收官之作——再议横截面因子。 在通用05策略中&#xff0c;我们以一种很简单的框架和复现方式&#xff0c;为大家展示了横截面因子在期货中的运用展…

5. 本地方法接口和本地方法栈

5.1. 什么是本地方法&#xff1f; 简单地讲&#xff0c;一个Native Method是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法&#xff1a;该方法的实现由非Java语言实现&#xff0c;比如C。这个特征并非Java所特有&#xff0c;很多其它的编程语言都有这一…

云贝餐饮连锁独立版 v2.7.9+公众号+小程序端+全插件(免授权前端线传)安装教程

云贝餐饮连锁版主要基于目前比较流行小程序生态下的自助点单系统&#xff0c;一款非常不错的餐饮外卖小程序。播播资源测试云贝餐饮连锁独立版 v2.7.9该版本与上一版一样永久授权版&#xff0c;增加了小程序前端线传功能&#xff08;通过其他第三方上传&#xff09;&#xff0c…

jdk17下netty导致堆内存疯涨原因排查 | 京东云技术团队

背景&#xff1a; 介绍 天网风控灵玑系统是基于内存计算实现的高吞吐低延迟在线计算服务&#xff0c;提供滑动或滚动窗口内的count、distinctCout、max、min、avg、sum、std及区间分布类的在线统计计算服务。客户端和服务端底层通过netty直接进行tcp通信&#xff0c;且服务端…

JS判断对象是否发生变化,常用于监听页面表单是否修改并给出保存提示

本文主要封装方法&#xff0c;实现用户离开表单编辑页面时弹出提示框&#xff0c;若表单数据发生变化&#xff0c;则提示用户是否保存当前页面的信息&#xff0c;如图&#xff1a; 封装方法&#xff1a; /*** 比较俩个对象之间的差异&#xff0c;项目中多处用到监听表单数据是…

配电室能耗数据采集系统

随着社会的快速发展&#xff0c;能源消耗逐年增加&#xff0c;能源问题已成为制约我国经济社会发展的瓶颈。在此背景下&#xff0c;节能减排、绿色发展成为国家战略&#xff0c;而配电室作为电力系统的重要组成部分&#xff0c;其能耗管理对整个电力系统的能效有着举足轻重的影…

SQL sever中表数据管理

目录 一、插入数据&#xff1a; 二、更新数据&#xff1a; 三、删除数据&#xff1a; 四、清空数据&#xff1a; 4.1使用DELETE语句&#xff1a; 4.2 使用TRUNCATE TABLE语句&#xff1a; 4.3区别&#xff1a; 4.3.1DELETE FROM&#xff1a; 4.3.2TRUNCATE TABLE&am…

正文—态路小课堂丨光模块安装与拆卸的小指南

点击蓝字 | 关注我们 TARLUZ态路 光模块通常由非常精密的光学元件组成&#xff0c;对于光信号的接收和发射非常敏感。静电和光口污染对光模块信号传输有着很大的影响。静电会导致光模块器件的性能降低、寿命缩短&#xff0c;可能会造成不可逆的损坏。光口污染会导致光信号的衰…

“海葵”强势来袭,台风天如何做好防涝排水工作?

中央气象台9月4日06时发布台风黄色预警&#xff1a;今年第11号台风“海葵”&#xff08;HAIKUI&#xff09;的中心已于昨天&#xff08;9月3日&#xff09;晚上7点50分前后移入台湾海峡南部海面。 预计&#xff0c;“海葵”将以每小时10公里左右的速度向西偏北方向移动&#xf…

提振印度市场?iPhone15首发之一,富士康工厂将提前生产iPhone15

根据金融时报的报道&#xff0c;苹果公司计划将印度作为其新款 iPhone 15 的首发市场之一。以往的经验显示&#xff0c;印度市场通常会比其他市场延迟一个月左右才能上市&#xff0c;但今年情况将发生变化。据报道&#xff0c;位于印度东南部城市金奈的富士康工厂计划在9月中旬…

浅析安防视频监控平台EasyCVR视频融合平台接入大量设备后是如何维持负载均衡的

安防视频监控平台EasyCVR视频融合平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理平台EasyCVR既具备…

qemu/kvm学习笔记

qemu/kvm架构 cpu虚拟化的示例 Reference: kvmtest.c [LWN.net] 主要步骤&#xff1a; QEMU通过/dev/kvm设备文件发起KVM_CREATE_VM ioctl&#xff0c;请求KVM创建一个虚拟机。KVM创建虚拟机相应的结构体&#xff0c;并为QEMU返回一个虚拟机文件描述符QEMU通过虚拟机文件描述…

【每日一题】54. 螺旋矩阵

54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5…

电脑内存不足怎么办?分享4个释放空间小妙招!

“我的电脑好像也没有保存什么很大的文件&#xff0c;为什么总会显示电脑内存不足呀&#xff1f;现在电脑非常的卡&#xff0c;有什么好用的方法可以快速清理电脑内存吗&#xff1f;希望大家给我出出主意&#xff01;” 我们在使用电脑时&#xff0c;可能电脑悄悄地保存了很多的…

线下沙龙 | 从营销扩张到高效回款,游戏公司如何通过全链路运营实现高质量出海!

游戏出海&#xff0c;是近些年来中国产业的风暴出口&#xff0c;在2020至2023年期间保持着绝对的领航地位。公开数据显示&#xff0c;过去4年里&#xff0c;游戏在各类App出海份额中总体保持稳定&#xff0c;高达 64.9%。 但毕竟海外是陌生的市场&#xff0c;我们见过太多折戟沉…

Windows——安装 Microsoft 便签

打开 Microsoft Store。 搜索 Microsoft 便签&#xff0c;点击安装。