LeetCode之二:字母异位词分组

题目

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

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

示例 1:

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

输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]

示例 2:

输入: strs = [“”]

输出: [[“”]]

思路

1、先构造一个哈希散列表,键是模板字符串,值是所有与模板字符串为字母互位词的字符串,所以是个字符串列表。
2、将字符串数组的字符串取出来,进行排序,为str
3、与哈希散列表的键进行比较,是字母互位词就将值,即字符串列表拿出来,将该str添加进去。
4、不是字母互位词说明该str是个新的模板字符串,也需要作为值放到哈希散列表的列表中去。

c++

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string,vector<string>> hashtable;for(auto s:strs){string key = s;sort(key.begin(),key.end());vector<string>list;if(hashtable.contains(key)){list = hashtable.find(key)->second;}list.emplace_back(s);hashtable[key]=list;}vector<vector<string>> ans;for(auto it = hashtable.begin();it!=hashtable.end();it++) ans.emplace_back(it->second);return ans; }
};

sort

cpp中的sort直接传入开始和结束即可。

emplace_back()

如果是嵌套的vector,无法直接通过内层的vector直接构造整个vector,而是需要用emplace_back()或者push_back()加上去。

python

class Solution(object):def groupAnagrams(self, strs):""":type strs: List[str]:rtype: List[List[str]]"""mp = {}for s in strs:key = "".join(sorted(s))if key not in mp:mp[key] = [s]else:mp[key].append(s)return list(mp.values())

字典的另一种构造方法

除了dict()之外,还可以直接写{}来构造。

“”.join(sorted(s))

list的构造方法

list(mp.values())

java

class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>>map = new HashMap<String, List<String>>();for(String s:strs){char[] ca = s.toCharArray();Arrays.sort(ca);String str = new String(ca);List<String>list = map.getOrDefault(str,new ArrayList<String>());//为什么不能是List<String>list = map.getOrDefault(str,new List<String>());list.add(s);//无论str是否是新的模板字符串,都需要把当前遍历的s加入字符串列表中。map.put(str, list);//这一步为什么不会放重复的键值进去。因为str是经过排序后的,所以放多少个str进去都是一样的键值。}return new ArrayList<List<String>>(map.values());
}
}

toCharArray()

注意:char[] ca = s.toCharArray();
Arrays.sort(ca);

getOrDefault() + List<>()和ArrayList<>()的区别

getOrDefault() 方法获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值。
hashmap.getOrDefault(Object key, V defaultValue)
所以这里的代码不可以是
List<String>list = map.getOrDefault(str,new List<String>());
而一定要是
List<String>list = map.getOrDefault(str,new ArrayList<String>());
因为List<>()是一个接口,不可以被实例化。而ArrayList可以被实例化。

ArrayList<List>(map.values())

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

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

相关文章

前端框架Vue学习 ——(四)Axios

文章目录 Axios 介绍Axios 入门Vue项目中使用 Axios Axios 介绍 介绍: Axios 对原生的 Ajax 进行了封装&#xff0c;简化书写&#xff0c;快速开发。&#xff08;异步请求&#xff09; 官网: https://www.axios-http.cn/ 官网介绍&#xff1a;Axios 是一个基于 promise 网络请…

基于点云的深度学习方法综述

基于点云的深度学习方法综述_点云深度学习_视觉先锋的博客-CSDN博客 我们生活在一个三维世界里&#xff0c;自从1888年相机问世以来&#xff0c;三维世界的视觉信息就通过相机被映射到二维图象上。但是二维图像的缺点也是显而易见的&#xff0c;那就是缺少深度信息以及真实世界…

python3中\和\\

在python3中\和\\都表示\。请看如下示例代码&#xff0c; s "ep_match\.log" print(s) s "ep_match\\.log" print(s) s "ep_match\\\.log" print(s) s "ep_match\\\\.log" print(s) 说明一下&#xff0c;上述代码在linux和windo…

数据结构和算法是人工智能的基石

文章目录 1. 引言2. 主要内容3. 联合推荐4. 购买方式5. 总结 1. 引言 数据结构和算法是计算机科学的基石&#xff0c;是计算机的灵魂&#xff0c; 要想成为计算机专业人员&#xff0c;学习和掌握算法是十分必要的。不懂数据结构和算法的人不可能写出效率更高的代码。计算机科学…

php实现钉钉机器人推送消息和图片内容(完整版)

先来看下实现效果: 代码如下: function send_dingtalk_markdown($webhook , $title , $message "", $atMobiles [], $atUserIds []) {$data ["msgtype" > "markdown","markdown" > ["title" > $title,&quo…

Luckysheet 实现excel多人在线协同编辑

前言 前些天看到Luckysheet支持协同编辑Excel&#xff0c;正符合我们协同项目的一部分&#xff0c;故而想进一步完善协同文章&#xff0c;但是遇到了一下困难&#xff0c;特此做声明哈&#xff0c;若侵权&#xff0c;请联系我删除文章&#xff01; 若侵犯版权、个人隐私&#x…

五、计算机网络

&#xff08;一&#xff09;OSI/RM 七层模型 七层模型是计算机网络的基石&#xff0c;整个计算机网络是构建与七层模型之上的。 在数据链路层&#xff0c;数据开始以帧为单位&#xff0c;网卡的 MAC 地址就是数据帧的地址&#xff0c;数据的传输开始有地址了。 局域网是工作…

能介绍一下Git的分支管理功能吗?

Git 的分支管理功能是它最强大和受欢迎的特性之一。分支在 Git 中是指开发人员可以在同一个代码仓库中创建的独立工作流。下面是 Git 分支管理的一些关键概念&#xff1a; 主分支&#xff08;Master/Main Branch&#xff09;&#xff1a;主分支是 Git 仓库的默认分支&#xff…

目标检测中的评价指标

目标检测中的评价指标 将检测目标分为正样本和负样本。 真阳性&#xff08;true positives , TP&#xff09; : 正样本被正确识别为正样本。 假阳性&#xff08;false positives, FP&#xff09;: 负样本被错误识别为正样本。 假阴性&#xff08;false negatives, FN&#…

Floor报错注入理论及实战

rand()函数&#xff1a;随机返回0-1之间的小数 floor()函数&#xff1a;小数向下取证书。向上取整数ceiling() concat_ws函数&#xff1a;将括号内数据用第一个字段连接起来 group by子句&#xff1a;分组语句&#xff0c;常用语结合统计函数&#xff0c;根据一个或多个列&a…

word统计全部字符数。

问题描述&#xff1a;在投稿SCI论文时&#xff0c;有时会要求提交一个highlight文档&#xff0c;要求不超过85个字符。 具体如下&#xff1a;maximum 85 characters per bullet point including spaces 这里的字符不单单包括字母和汉字&#xff0c;还包括标点和空格键。那么如…

0-JavaWeb基础总结

0-JavaWeb基础总结 内容文章链接1-前端基本知识-1-HTMLhttps://blog.csdn.net/qq_45445505/article/details/1342734321-前端基本知识-2-CSShttps://blog.csdn.net/qq_45445505/article/details/1342734751-前端基本知识-3-JavaScripthttps://blog.csdn.net/qq_45445505/artic…

linux添加一条到中间路由器的路由

有时候需要配置一些明细路由&#xff0c;不能直接通过网关进行路由转发 配置示例 ip route add 10.0.12.0/24 via 10.0.41.1 dev bond0 这个命令是用于在Linux操作系统上配置IP路由的命令。具体来说&#xff0c;这个命令的含义是&#xff1a; ip route add: 这部分表示要添加…

5G及其后的5G非地面网络:趋势和研究挑战-HARQ部分

NTN组件纳入5G架构第一步 在NTN SI中定义了一组架构选项。就NT部分而言&#xff0c;已确定了两大类&#xff1a;星载&#xff08;即基于卫星的通信平台&#xff09;和机载&#xff08;即HAPS&#xff09;设备 并行管理HARQ最大进程数 NHARQRTT(NTX−1)2μ NTX&#xff1a;传输…

【Vue】vant2使用van-tree-select实现【全选、反选、搜索】,自定义组件,拿去即用。2.0版本保姆级教程

系列文章目录 这是原篇教程&#xff0c;本篇为升级版&#xff0c;旧版已废弃。对你们不友好。 【Vue】vue2移动端 &#xff0c;vant2使用van-tree-select分类选择实现【全选】和【取消全选】、【搜索过滤当前children】&#xff0c;只影响当前显示children&#xff0c;并且去重…

OpenCV入门6:图像变换

在OpenCV中&#xff0c;提供了一些函数和方法可以进行图像的缩放、仿射变换等操作。下面简要介绍一些常见的图像变换方法及其在OpenCV中的实现方式&#xff1a; 图像缩放&#xff1a; 图像缩放是改变图像的大小&#xff0c;可以将图像放大或缩小。在OpenCV中&#xff0c;可以…

破解密码 LLM(代码LLM如何从 RNN 发展到 Transformer)

舒巴姆阿加瓦尔 一、说明 近年来&#xff0c;随着 Transformer 的引入&#xff0c;语言模型发生了显着的演变&#xff0c;它彻底改变了我们执行日常任务的方式&#xff0c;例如编写电子邮件、创建文档、搜索网络甚至编码方式。随着研究人员在代码智能任务中应用大型语言模型&am…

C++高级功能笔记

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…

LightDB23.4 table函数支持column_value列

功能介绍 用户在使用LightDB数据库Oracle兼容模式的过程中发现table函数不支持column_value列&#xff0c;导致部分在Oracle数据库可以运行的SQL在LightDB上报错。所以&#xff0c;在LightDB23.4版本上table函数支持了column_value列。 使用约束&#xff1a; 需要是Oracle兼容…

Docker概述

Docker概述 Docker概述Docker安装Docker命令 镜像命令容器命令操作命令 … Docker镜像容器数据卷DockerFileDocker网络管理IDEA整合DockerDocker ComposeDocker Swarm 简化版的K8s Docker为什么出现&#xff1f; 传统的项目部署&#xff0c;环境配置是十分麻烦&#xff0c;第…