当前位置: 首页 > news >正文

力扣每日一题49:字母异位词分组

题目描述:

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

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

示例 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] 仅包含小写字母

通过次数

542.1K

提交次数

799.9K

通过率

67.8%

思路和题解:

字母异位词里面的的字母都是相同的,只是排列顺序不同,如果我们把每个单词都排序一遍,排序后字母异位词是相等的,然后再将字符串数组排序一边,此时字母异位词就挨在一起了,我们只要把连在一起并且排序后相等的两个字母放进一个组合里,最后把所有的组合返回即可。听不懂的话我举个例子,就拿样例一来说strs=["eat","tea","tan","ate","nat","bat"],把每个单词排序得到a=[aet, aet ,ant ,aet ,ant ,abt],再将字符串数组a排序,排序的时候连带strs一起交换得到strs=[bat tea ate eat nat tan]   a=[abt aet aet aet ant ant] ,即

第一次将每个单词排序
strs=[eat tea tan ate nat bat] a=[aet aet ant aet ant abt] 
第二次将a中单词作为一个整体排序
strs=[bat tea ate eat nat tan] a=[abt aet aet aet ant ant] 

来看我的代码:

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vector<string>> ans;vector<string> a;int n=strs.size();for(int i=0;i<n;i++){//先对原始字符串数组中每一个字符串进行排序a.push_back(strs[i]);sort(a[i].begin(),a[i].end());}// //test1// for(int i=0;i<n;i++)//     cout<<strs[i]<<" ";// cout<<endl;// for(int i=0;i<n;i++)//     cout<<a[i]<<" ";// cout<<endl;// 再对字符串数组a排序,strs跟着换for(int i=0;i<n-1;i++){int k=i;for(int j=i+1;j<n;j++){if(a[j]<a[k]) k=j;}string temp=a[i];a[i]=a[k],a[k]=temp;temp=strs[i],strs[i]=strs[k],strs[k]=temp;}// //test2// for(int i=0;i<n;i++)//     cout<<strs[i]<<" ";// cout<<endl;// for(int i=0;i<n;i++)//     cout<<a[i]<<" ";// cout<<endl;//这个时候字母异位词就黏在一起了int pos=0,i=0;while(pos<n){vector<string> group;group.emplace_back(strs[pos]);while(pos<n-1&&a[pos]==a[pos+1]){pos++;group.emplace_back(strs[pos]);}pos++;ans.emplace_back(group);}return ans;}
};

改进:

上述方法的核心是将所有的字母异位词放在一起(指位置相邻),然后再将相邻且排序后相等的字符串放在一个字符串数组里。其实将排序后的一个string作为键,对应的排序之前的string作为值放入一个map里,我们就可以直接把所有的字母异位词放在一起(不仅仅是字母异位词不是相邻,而且非字母异位词之前也分开了)。看代码:

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vector<string>> ans;map<string,vector<string>> mp;int n=strs.size();for(int i=0;i<n;i++){string key=strs[i];sort(key.begin(),key.end());mp[key].emplace_back(strs[i]);}for(auto it=mp.begin();it!=mp.end();it++){ans.emplace_back(it->second);}return ans;}
};

运行:

相关文章:

力扣每日一题49:字母异位词分组

题目描述&#xff1a; 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate&quo…...

TechSmith Camtasia Studio 23.3.2.49471 Crack

全新的Camtasia 2023.2 Camtasia Studio是专业的屏幕录像和视频编辑的软件套装。软件提供了强大的屏幕录像&#xff08;Camtasia Recorder&#xff09;、视频的剪辑和编辑&#xff08;Camtasia Studio&#xff09;、视频菜单制作&#xff08;Camtasia MenuMaker&#xff09;、视…...

进程【Linux系统编程】

一、先谈硬件——冯诺依曼体系结构 存储器&#xff1a;内存&#xff08;硬盘是外存&#xff09; 输入设备&#xff1a;鼠标、键盘、摄像头、话筒、磁盘、网卡…… 输出设备&#xff1a;显示器、播放器硬件、磁盘、网卡…… 输入输出设备是外部设备&#xff0c;简称外设。 中央…...

【Edabit 算法 ★☆☆☆☆☆】【分钟转秒数】Convert Minutes into Seconds

【Edabit 算法 ★☆☆☆☆☆】【分钟转秒数】Convert Minutes into Seconds math numbers Instructions Write a function that takes an integer minutes and converts it to seconds. Examples convert(5) // 300 convert(3) // 180 convert(2) // 120Notes Don’t forge…...

Django实现音乐网站 ⒇

使用Python Django框架做一个音乐网站&#xff0c; 本篇音乐播放器-添加播放音乐功能实现。 目录 创建播放器数据表 设置表结构 执行创建表 命令 执行 数据表结构 添加单个歌曲 创建路由 加入播放器视图 模板处理 基类方法 子页面调用 优化弹窗 加入layui文件 基…...

C++类对象所占内存空间大小分析

前言 类占内存空间是只类实例化后占用内存空间的大小&#xff0c;类本身是不会占内存空间的。用 sizeof 计算类的大小时&#xff0c;实际上是计算该类实例化后对象的大小。空类占用1字节原因&#xff1a;C要求每个实例在内存中都有一个唯一地址&#xff0c;为了达到这个目的&am…...

绿肥红瘦专栏数据的爬取

前言 要想爬专栏&#xff0c;先得爬用户。要想爬用户&#xff0c;三个header参数挡住了去路&#xff1a;x-zst-81&#xff0c;x-zse-93&#xff0c;x-zse-96&#xff0c;经过搜索x-zse-96&#xff0c;定位到设置该字段的位置&#xff1a; 这个t2是固定的值&#xff0c;t0来自于…...

centos或aws linux部署java应用,环境搭建shell

目录 设置root密码开启密码登录安装docker安装nginx设置nginx自启动nginx配置https配置http集群tcp集群 安装docker设置docker自启动修改docker基础配置创建docker网关docker安装mysql单机版本主从版本 docker安装redis设置密码&#xff1a;不要密码&#xff1a; docker安装rab…...

2023年中国车用冲压模具行业特征、竞争现状及行业市场规模分析[图]

汽车冲压件模具具有尺寸大、型面复杂、精度要求高等特点&#xff0c;属于技术密集型产品。汽车冲压模具能快速精密地把材料直接加工成零件或半成品并通过焊接、铆接、拼装等工艺装配成零部件&#xff0c;冲压模具的设计开发和加工能力对汽车冲压零部件产品总制造成本、质量及性…...

基于Pytorch的CNN手写数字识别

作为深度学习小白&#xff0c;我想把自己学习的过程记录下来&#xff0c;作为实践部分&#xff0c;我会写一个通用框架&#xff0c;并会不断完善这个框架&#xff0c;作为自己的入门学习。因此略过环境搭建和基础知识的步骤&#xff0c;直接从代码实战开始。 一.下载数据集并加…...

Java设计模式之观察者模式(Observer Pattern)

观察者模式&#xff08;Observer Pattern&#xff09;是一种常用的软件设计模式&#xff0c;它用于在对象之间建立一种一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;它的所有依赖对象都会得到通知并自动更新。观察者模式属于行为型模式。 在观察者模式…...

最优化:建模、算法与理论(最优性理论2

5.7 约束优化最优性理论应用实例 5.7.1 仿射空间的投影问题 考虑优化问题 min ⁡ x ∈ R n 1 2 ∣ ∣ x − y ∣ ∣ 2 2 , s . t . A x b \min_{x{\in}R^n}\frac{1}{2}||x-y||_2^2,\\ s.t.{\quad}Axb x∈Rnmin​21​∣∣x−y∣∣22​,s.t.Axb 其中 A ∈ R m n , b ∈ R m …...

redis一主一从搭建

1.复制一份redis.conf并将6380都改成6379 [redist3-dtpoc-dtpoc-web06 conf]$ cp redis.conf redis_6380.conf [redist3-dtpoc-dtpoc-web06 conf]$ vi redis_6380.conf port 6380 daemonize yes pidfile "/home/redis/redis/logs/redis_6380.pid" logfile "/hom…...

【MySql】8- 实践篇(六)

文章目录 1. MySql保证主备一致1.1 MySQL 主备的基本原理1.2 binlog 的三种格式对比1.3 循环复制问题 2. MySql保证高可用2.1 主备延迟2.2 主备延迟的来源2.3 可靠性优先策略2.4 可用性优先策略 3. 备库为何会延迟很久-备库并行复制能力3.1 MySQL 5.6 版本的并行复制策略3.2 Ma…...

Spring篇---第七篇

系列文章目录 文章目录 系列文章目录一、说说事务的传播级别二、Spring 事务实现方式三、Spring框架的事务管理有哪些优点一、说说事务的传播级别 Spring事务定义了7种传播机制: PROPAGATION_REQUIRED:默认的Spring事物传播级别,若当前存在事务,则加入该事务,若 不存在事务…...

2023年中国轮胎模具需求量、竞争格局及行业市场规模分析[图]

轮胎模具是轮胎生产线中的硫化成形装备&#xff0c;是高技术含量、高精度及高附加值的个性化模具产品&#xff0c;尤其是轮胎的花纹、图案、字体以及其他外观特征的成形都依赖于轮胎模具&#xff0c;因此其制造技术难度较高。其主要功能是通过所成型材料&#xff08;主要是橡塑…...

集成学习方法(随机森林和AdaBoost)

释义 集成学习很好的避免了单一学习模型带来的过拟合问题 根据个体学习器的生成方式&#xff0c;目前的集成学习方法大致可分为两大类&#xff1a; Bagging(个体学习器间不存在强依赖关系、可同时生成的并行化方法) 流行版本&#xff1a;随机森林(random forest)Boosting(个体…...

PeopleCode中Date函数的用法

语法 Date(date_num) 描述 The Date function takes a number in the form YYYYMMDD and returns a corresponding Date value. If the date is invalid, Date displays an error message. Date函数输入是一个形如“YYYYMMDD”的数字&#xff0c;返回一个相应的Date类型的值…...

解决 el-tree setChecked 方法偶尔失效的方法

目前在大多数公司中&#xff0c;菜单的权限控制都是不可或缺的功能 在和后端配合做权限控制的时候不可避免的会用到 el-tree 然而这个组件本身带的坑不少 我们需要回显对应角色拥有的菜单&#xff0c;在不严格的模式下&#xff0c;父节点的选中会连带子节点的选中 如果 &a…...

重磅发布!RflySim Cloud 智能算法云仿真平台亮相,助力大规模集群算法高效训练

RflySim Cloud智能算法云仿真平台&#xff08;以下简称RflySim Cloud平台&#xff09;是由卓翼智能及飞思实验室为无人平台集群算法验证、大规模博弈对抗仿真、人工智能模型训练等前沿研究领域研发的平台。主要由环境仿真模块、物理效应计算模块、多智能体仿真模块、分布式网络…...

TX412 双极锁存型霍尔位置传感器

产品特点 ● 双极锁存型霍尔效应传感器 ● 宽的工作电压范围: 3.8V~30V ● 集电极开路输出 ● 最大输出灌电流&#xff1a;50mA ● 电源反极性保护 ● 工作温度&#xff1a;-40℃~125℃ ● 封装形式: SOT23-3 典型应用 ● 直流无刷电机 ● 位置控制 ● 安全报警装置 ● 转速检测…...

8d报告案例分析:拆解8d报告案例分析的8个步骤,解决生产现场重复发生的质量难题

在制造业的质量管理工作中&#xff0c;8d报告案例分析绝对是绕不开的核心话题。无论是应对主机厂的客诉&#xff0c;还是解决内部生产现场重复发生的质量难题&#xff0c;一份高质量的8d报告案例分析都是质量人手中的“尚方宝剑”。然而&#xff0c;很多企业在进行8d报告案例分…...

如何高效管理Windows窗口缩放:Magpie系统托盘功能的完整实现方案

如何高效管理Windows窗口缩放&#xff1a;Magpie系统托盘功能的完整实现方案 【免费下载链接】Magpie A general-purpose window upscaler for Windows 10/11. 项目地址: https://gitcode.com/gh_mirrors/mag/Magpie Magpie是一款专为Windows 10/11设计的通用窗口放大器…...

测试开发如何突破35岁瓶颈?三个被验证的转型路径

在技术迭代如潮的今天&#xff0c;“35岁危机”仿佛一道隐形的门槛&#xff0c;横亘在许多软件测试与测试开发&#xff08;SDET/Test Engineer&#xff09;从业者面前。当体力与学习曲线不再具备绝对优势&#xff0c;当职业发展似乎触达天花板&#xff0c;焦虑与迷茫随之而来。…...

别再手动改PR了!教你写个ABAP报表,一键批量处理采购申请审批与信息更新

告别低效操作&#xff1a;用ABAP打造智能采购申请批量处理系统 每天面对数百条采购申请的状态更新和文本修改&#xff0c;你是否已经厌倦了重复的点击和等待&#xff1f;在SAP系统中&#xff0c;采购申请的日常维护往往成为业务人员的时间黑洞。本文将带你从零开始构建一个智能…...

从CMU15-445 Project#1出发:手把手教你用C++实现LRU-K缓存替换策略(附完整源码)

从零实现LRU-K缓存替换策略&#xff1a;CMU15-445 Project#1深度解析与C实战 在数据库系统与操作系统领域&#xff0c;缓存替换策略直接影响着系统性能。当CMU15-445课程Project#1要求实现LRU-K算法时&#xff0c;许多学习者发现原始论文晦涩难懂&#xff0c;而网上又缺乏完整…...

3分钟搞定!Windows系统显示iPhone HEIC照片缩略图终极指南

3分钟搞定&#xff01;Windows系统显示iPhone HEIC照片缩略图终极指南 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 还在为iPh…...

5分钟掌握FreeRouting:终极PCB自动布线工具完全指南

5分钟掌握FreeRouting&#xff1a;终极PCB自动布线工具完全指南 【免费下载链接】freerouting Advanced PCB auto-router 项目地址: https://gitcode.com/gh_mirrors/fr/freerouting FreeRouting是一款专业的开源PCB自动布线工具&#xff0c;能够与KiCad、Eagle等主流PC…...

Windows 11 LTSC 24H2一键恢复微软商店:完整实用指南

Windows 11 LTSC 24H2一键恢复微软商店&#xff1a;完整实用指南 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否正在使用Windows 11 LTSC 24H2…...

CUDA 13编译失败?显存泄漏?核函数崩溃?——AI工程师必须掌握的5大隐性陷阱及3步诊断协议

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;CUDA 13编译失败&#xff1f;显存泄漏&#xff1f;核函数崩溃&#xff1f;——AI工程师必须掌握的5大隐性陷阱及3步诊断协议 陷阱一&#xff1a;CUDA 13.0 中 __host__ __device__ 函数签名不一致引发…...