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

每日OJ题_哈希表⑤_力扣49. 字母异位词分组

目录

力扣49. 字母异位词分组

解析代码


力扣49. 字母异位词分组

49. 字母异位词分组

难度 中等

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

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

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

提示:

  • 1 <= strs.length <= 10^4
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母
class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {}
};

解析代码

        互为字母异位词的单词有⼀个特点:将它们排序之后,两个单词应该是完全相同的。 所以可以利用这个特性,将单词按照字典序排序,如果排序后的单词相同的话,就划分到同一组中。

        这时我们就要处理两个问题:

  • 排序后的单词与原单词需要能互相映射
  • 将排序后相同的单词划分到同⼀组

利用语言提供的容器的强大的功能就能实现这两点:

  • 将排序后的字符串( string )当做哈希表的 key 值
  • 将字母异位词数组( vector<string> )当成 val 值。
class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string,vector<string>> hash;for(auto& e : strs){string tmp = e;sort(tmp.begin(), tmp.end()); // 排序后异位次的key值都相等了hash[tmp].push_back(e);}vector<vector<string>> ret;for(auto& [x, y] : hash) // 范围for得到两个值的用法{ret.push_back(y);}return ret;}
};
http://www.lryc.cn/news/317206.html

相关文章:

  • 【Linux】-Linux下的软件商店yum工具介绍(linux和windows互传文件仅仅一个拖拽搞定!!!!)
  • 320: 鸡兔同笼(python)
  • CentOS 8启动流程
  • js【详解】原型 vs 原型链
  • 贪心算法: 奶牛做题
  • go语言tcp协议实现文件上传
  • 【Unity】利用二进制数据持久化 【练习学习项目/有不足之处欢迎斧正/侵删】
  • 做伦敦银要等怎样的价格与行情?
  • SpringBoot多数据源切换 多数据源事务解决方案 二
  • ElasticSearch 搜索推荐
  • Linux纯命令行查看文本文件
  • 解决前端项目中Node.js版本不一致导致的依赖安装错误
  • IIoT 与 IoT 之间的区别
  • spring boot3token拦截器链的设计与实现
  • LeetCode543题:二叉树的直径(python3)
  • zabbix 7.0编译部署教程
  • Oracle Linux 8.9 安装 Python 3.11.8 和 Miniconda
  • Docker 配置阿里云镜像加速器
  • [Linux][CentOs][Mysql]基于Linux-CentOs7.9系统安装并配置开机自启Mysql-8.0.28数据库
  • 实用指南!2024年度计划怎么写?工作学习必备!
  • js的事件有哪些?
  • Mock.js 基本语法与应用笔记
  • vue从零到一创建项目?
  • 安装PyTorch详细过程
  • 使用Rust开发小型搜索引擎
  • 2024.3.13
  • schedule() , schedule_work() 以及schedule_timeout_interruptible()区别
  • AWS入门实践-AWS CLI工具的使用介绍
  • Xterminal:未来的终端体验
  • “光谱视界革新:ChatGPT在成像光谱遥感中的智能革命“