力扣每日一题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;}
};

运行:

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

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

相关文章

改造xxl-job适配nacos注册中心

xxl-job并没有对nacos、zookeeper这一类注册中心进行适配&#xff0c;所以需要进行改造。 改造目标 1.对调度器&#xff0c;需要能注册到nacos上&#xff0c;并且执行器管理里的 机器地址 能使用 lb://serviceName 这种地址 2.对执行器&#xff0c;需要能注册到nacos上&…

用python写一个贪吃蛇的程序能运行能用键盘控制

用python写一个贪吃蛇的程序能运行能用键盘控制 1.源码2.运行效果 1.源码 开发库使用&#xff1a;pygame random 直接在终端运行&#xff1a;pip install pygame pycharm安装库&#xff1a;文件-设置-项目-Python 解释器 import pygame import random# 初始化pygame pygame…

MATLAB中 tf2zpk函数用法

目录 语法 说明 示例 IIR滤波器的极点、零点和增益 tf2zpk函数的功能是将传递函数滤波器参数转换为零极点增益形式。 语法 [z,p,k] tf2zpk(b,a) 说明 [z, p, k] tf2zpk(b, a) 从传递函数参数 b 和 a 中找到零点矩阵 z&#xff0c;极点向量 p&#xff0c;以及相关的增益…

蓝桥杯(砝码称重,C++)

思路&#xff1a; 1、用到动态规划思想。 2、用ans[i][j]记录用前i个砝码&#xff0c;能不能称出重量j。 3、详细思路见代码注释&#xff0c;易懂。 #include<iostream> #include<cmath> using namespace std; int main() {int n;int a[110];//记录每个砝码重量int…

2022年亚太杯APMCM数学建模大赛C题全球变暖与否全过程文档及程序

2022年亚太杯APMCM数学建模大赛 C题 全球变暖与否 原题再现&#xff1a; 加拿大的49.6C创造了地球北纬50以上地区的气温新纪录&#xff0c;一周内数百人死于高温&#xff1b;美国加利福尼亚州死亡谷是54.4C&#xff0c;这是有史以来地球上记录的最高温度&#xff1b;科威特53…

nodejs+vue 校园通勤车-计算机毕业设计

在此情况下开发一款校园通勤车可视化系统小程序&#xff0c;于是乎变得非常合乎时宜。 经过网上调查和搜集数据,我们可以发现校园通勤车可视化管理方面的小程序在并不是相当普及,同时在校园通勤车可视化管理方面的可以有许多改进。目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪…

C++:无法查找或打开 PDB 文件?? 如何解决呢?以及产生原因是什么?

C:无法查找或打开 PDB 文件?? 如何解决呢&#xff1f;以及产生原因是什么&#xff1f; 前言解决办法原因 前言 最近博主在写C时&#xff0c;明明代码都正确&#xff0c;但编译失败。查看原因后发现显示&#xff1a;无法查找或打开 PDB 文件。&#xff08;先介绍解决办法&…

GRASP 、SOLID 与 GoF 设计模式

一、GRASP GRASP&#xff1a;通用职责分配软件设计模式(General Responsibility Assignment Software Patterns)&#xff0c;其主要思想是基于单一职责设计软件对象。 思考软件对象设计以及大型构件的流行方式是&#xff0c;考虑其职责、角色和协作。这是被称为职责驱动设计&a…

【Shell】环境变量 自定义变量 特殊变量

Shell变量&#xff1a;环境变量 目标 1、理解什么是系统环境变量&#xff1f; 2、掌握常用的系统环境变量都有哪些&#xff1f; Shell变量的介绍 变量用于存储管理临时的数据, 这些数据都是在运行内存中的. 变量类型 系统环境变量 自定义变量 特殊符号变量 系统环境变…

表示本机IP地址的方式(三种方式)

1、本机和网络上的其他主机都可以通过IP地址访问到服务器 2、通过 127.0.0.1 或者 localhost 访问 127.0.0.1 和 localhost 它们完全等价 只能 本机 通过 127.0.0.1 或者 localhost 访问&#xff0c;网络上的其他主机无法访问 3、 通过 0.0.0.0 访问服务器 表示所有可…

Leetcode——字符

520. 检测大写字母 class Solution { public:bool detectCapitalUse(string word) {int big 0, small 0, len word.length();for (int i 0; i < len; i) {if (word[i] > 65 && word[i] < 90) {big;}else {small;}}if (big len || small len) {return tr…

2023年中国一次性医用内窥镜市场发展现状分析:相关产品进入上市高峰期[图]

基于对减少交叉感染风险和维护成本的需求等因素&#xff0c;一种新兴的、耗材化的一次性内窥镜可以避免因重复使用产品而导致的感染问题和高额的清洗消毒费用&#xff0c;从而提高患者的安全性并帮助医疗机构节省运营成本。 一次性和可重复使用医用内窥镜特点对比 资料来源&am…

CNN——卷积神经网络

文章目录 多层感知机&#xff08;MLP&#xff0c;Multilayer Perceptron&#xff09;神经网络定义MLP与神经网络的异同相同之处&#xff1a;不同之处&#xff1a;总结 为什么要使用神经网络CNN卷积层&#xff1a;池化层&#xff1a;全连接层&#xff1a; 卷积神经网络的优势pad…

c语言练习94:分割链表

分割链表 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 示例 1&#xff1a; 输入&#xff1a;head [1,4,3,2,5,2], x…

TikTok Shop美国本土店VS跨境店,浅析与选择

TikTok不仅仅是一个用于分享有趣短视频的平台&#xff0c;它也逐渐成为了商家们极力推广自己品牌和产品的场所。 在TikTok的商业生态系统中&#xff0c;存在几种不同的商店类型&#xff0c;各有其独特性和适用场景。今天&#xff0c;我们就来深入探讨这些店的差异与特点。 一、…

vuecli2关于下载本地取环境变量没问题部署后路径取不到环境变量问题解决

功能 下载功能,用a标签实现下载 代码错误思路分析 解决办法可以忽略直接看下面 解决思路 在每个config文件中都定义了file_url,本地运行没有问题,但是部署到服务器开发环境, 拿到的是生产环境的FILE_URL地址 首先看了流水线-构建配置-编译配置-编译脚本里的打包命令: ** 本…

数据挖掘原理与算法

一、什么是闭合项集? Close算法对Apriori算法的改进在什么地方? 闭合项集&#xff1a;就是指一个项集x&#xff0c;它的直接超集的支持度计数都不等于它本身的支持度计数。 改进的地方&#xff1a; 改进方向&#xff1a; 加速频繁项目集合的生成&#xff0c;减少数据库库的扫…

微信小程序数据交互------WXS的使用

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 &#xff0c;越幸运。 1.数据库连接 数据表结构&#xff1a; 数据测式&#xff1a; 2.后台配置 pom.xml <?xml version&quo…

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

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

基于Java的图书商城管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…