力扣 | 49. 字母异位词分组

news2024/12/27 6:29:27

这里使用HashMap

在这里插入图片描述

Java

package _49;

import java.util.*;

public class Problem_49_GroupAnagrams {
    public List<List<String>> groupAngrams(String [] strs){
        Map<String,List<String>> map = new HashMap<>();
//        int [] arr = new int[]{};
        for(String s : strs){
            char[] chars = s.toCharArray();
            Arrays.sort(chars);//排序之后的字母异位词都是一样,因此可以作为map的key
            String key = String.valueOf(chars);
            if(!map.containsKey(key)) map.put(key,new ArrayList<>());
            map.get(key).add(s);
        }

        return new ArrayList<>(map.values());//

    }
  }


public List<List<String>> groupAnagrams1(String[] strs) {
        Map<String, List<String>> map = new HashMap<>();
        for (String s : strs) {
            char[] chars = s.toCharArray();
            int[] count = new int[26];
            for (char c : chars) count[c - 'a']++;
            String key = Arrays.toString(count);//int: 32位有符号整数,范围是-2^31到2^31-1。
            if (!map.containsKey(key)) map.put(key, new ArrayList<>());
            map.get(key).add(s);
        }
        return new ArrayList<>(map.values());
    }

C++

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string, vector<string>> map;
        for (string& str : strs) {
            vector<int> count(26);
            for (char c : str) count[c - 'a']++;
            string key = "";
            for (int i = 0; i < 26; i++) key += count[i];
            map[key].emplace_back(str);
        }
        vector<vector<string>> ans;
        for (auto it = map.begin(); it != map.end(); ++it) {
            ans.emplace_back(it->second);
        }
        return ans;
    }

    vector<vector<string>> groupAnagrams1(vector<string>& strs) {
        unordered_map<string, vector<string>> map;
        for (string& str : strs) {
            string key = str;
            sort(key.begin(), key.end());
            map[key].emplace_back(str);
        }
        vector<vector<string>> ans;
        for (auto it = map.begin(); it != map.end(); ++it) {
            ans.emplace_back(it->second);
        }
        return ans;
    }
};

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

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

相关文章

国科大软件安全原理期末复习笔记

1 软件安全总论 1.软件的三大特性&#xff1a;复杂性、互连性、可扩展性&#xff1b; 2.基本概念&#xff1a;缺陷、漏洞、风险 缺陷&#xff08;bug&#xff09;&#xff1a;软件在设计和实现上的错误&#xff1b;漏洞&#xff08;vulnerability&#xff09;&#xff1a;漏洞…

车厢重组#洛谷

题目描述 在一个旧式的火车站旁边有一座桥&#xff0c;其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢&#xff0c;如果将桥旋转 180 180 180 度&#xff0c;则可以把相邻两节车厢的位置交换&#xff0c;用这种方法可以重新排列车厢的顺序…

基于springboot体育场馆运营管理系统源码

基于springboot体育场馆运营管理系统源码330 -- MySQL dump 10.13 Distrib 5.7.31, for Linux (x86_64) -- -- Host: localhost Database: springboot3cprm -- ------------------------------------------------------ -- Server version 5.7.31/*!40101 SET OLD_CHARACT…

使用numpy处理图片——图片切割

大纲 上下切分左右切分代码地址 在《使用numpy处理图片——滤镜》和《用numpy处理图片——模糊处理》中&#xff0c;我们认识到对三维数组使用dsplit方法按第3维度&#xff08;深度&#xff09;方向切分的方法。 本文我们将介绍如何进行第一和第二维度切分&#xff0c;来达到图…

matlab|基于VMD-SSA-LSTM的多维时序光伏功率预测

目录 1 主要内容 变分模态分解(VMD) 麻雀搜索算法SSA 长短期记忆网络LSTM 2 部分代码 3 程序结果 4 下载链接 1 主要内容 之前分享了预测的程序基于LSTM的负荷和可再生能源出力预测【核心部分复现】&#xff0c;该程序预测效果比较好&#xff0c;并且结构比较清晰&#…

VMware workstation安装Fedora-Server-39-1.5虚拟机并配置网络

VMware workstation安装Fedora-Server-39-1.5虚拟机并配置网络 Fedora包含的软件以自由及开放源码许可来发布&#xff0c;并旨在成为该技术领域的领先者。Fedora在专注创新、抢先集成新技术、与上游Linux社区紧密工作方面拥有良好名声。该文档适用于在VMware workstation平台安…

什么是CNV?

CNV&#xff08;拷贝数变异&#xff09;是基因组遗传学中的一个术语&#xff0c;指的是在个体的DNA序列中与参考基因组相比存在的基因或DNA片段的拷贝数增加或减少。 这些变异可以涉及很小的DNA片段&#xff0c;也可能涉及数百个基因。CNV是基因组多样性的一个重要组成部分&…

10万字208道软件测试经典面试题总结(附答案)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;获取《10万字208道软件测试经典面试总结&#xff08;附答案&#xff09;》pdf&#xff0c;背题更方便&#xff0c;一文在手&#xff0…

window系统安装MySQL -- MySQL(1)

第一步&#xff1a; 下载mysql安装包 1&#xff09;打开MySQL官方链接&#xff1a;https://www.mysql.com 2&#xff09;选择 DOWNLOADS 3&#xff09;往下滑&#xff0c;点击社区版本下载 4&#xff09;点击 MySQL installer for Windows 5&#xff09;点击安装 第二步&#…

MySQL的单表查询

单表查询的素材&#xff1a; 一、单表查询 素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 floa…

​HDD回暖于2024,与SSD决战于2028--part2

东芝和西部数据在2023年的硬盘产品中都没有采用类似希捷的HAMR技术产品&#xff0c;而是采用了其他的技术方案用于提升存储容量。 东芝采用了MAMR技术&#xff0c;通过微波磁通控制现象来提高高密度区域的写入信号质量。根据厂商的测试数据发现&#xff0c;MAMR的磁头可靠性比H…

MySQL解决海量数据和并发性的方案——分库分表

分库分表其实是两个事情&#xff0c;为了解决的东西实际上也是两个&#xff0c;但是一定要注意&#xff0c;不到最后万不得已&#xff0c;不要用分库分表&#xff0c;因为这会对数据查询有极大限制。 数据量太大查询慢的问题。 这里面我们讲的「查询」其实 主要是事务中的查询…

【征服redis2】redis的事务与lua

1.redis事务介绍 在前面我们介绍了redis的几种典型数据结构和应用&#xff0c;本文我们来看一下redis的事务问题。事务也是数据库的重要主题&#xff0c;熟悉关系型数据库的读者应该对事务比较了解&#xff0c;简单地说&#xff0c;事务表示一组动作&#xff0c;要么全部执行&…

C# Cad2016二次开发选择文本信息导出(六)

//选文本信息导出 [CommandMethod("getdata")] public void getdata() {// 获取当前文档和数据库Document doc Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;Database db doc.Database;Editor ed doc.Editor;// 获取当前…

腾讯云主机价格表和优惠活动汇总(2024年更新)

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

【Python】使用tkinter设计开发Windows桌面程序记事本(3)

上一篇&#xff1a;【Python】使用tkinter设计开发Windows桌面程序记事本&#xff08;2&#xff09;-CSDN博客 下一篇&#xff1a;【Python】使用tkinter设计开发Windows桌面程序记事本&#xff08;4&#xff09;-CSDN博客 作者发炎 本文章与"记事本项目"的第一篇文…

STM32串口485通信如何控制收发管脚

要有效的控制485的收发管脚&#xff0c;首先要知道485通信发送命令完成的时间&#xff0c;我们执行发送命令结束并不代表硬件已经把数据发出去了&#xff0c;可能1ms以后才真正完成&#xff0c;如果我们控制管脚不当&#xff0c;可能导致数据不能完全发出去。导致串口通信异常。…

日志采集传输框架之 Flume,将监听端口数据发送至Kafka

1、简介 Flume 是 Cloudera 提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、聚合和传 输的系统。Flume 基于流式架构&#xff0c;主要有以下几个部分组成。 主要组件介绍&#xff1a; 1&#xff09;、Flume Agent 是一个 JVM 进程&#xf…

数据结构队列实现(赋完整代码)

文章目录 1、定义及结构2、队列实现完整代码 1、定义及结构 1.一种特殊的线性表&#xff0c;只允许在一段进行插入&#xff0c;另一段进行删除&#xff1b; 2.进行插入操作的一端称为队尾&#xff0c;进行删除操作的一端称为队头&#xff1b; 3.队列具有先进先出的特性 FIFO…

Linux操作系统——重定向与缓冲区

1.理解一下struct file内核对象 上一篇文章&#xff08;文件详解&#xff09;我们一直在谈&#xff0c;一个文件要被访问就必须要先被打开&#xff0c;打开之前就必须要先把文件加载到内存&#xff0c;同时呢我们的操作系统为了管理文件也会为我们的文件创建相对应的struct fi…