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

05.字母异位词分组

在这里插入图片描述

题意理解

🧠 什么是“字母异位词”?

字母异位词是指由相同的字母组成,只是排列顺序不同的单词。

比如

"eat" 和 "tea" 是异位词,它们都包含 'e'、'a' 和 't'。"ate" 也是它们的异位词。但是 "tan" 就不是,它包含 't'、'a'、'n',和上面三个字母不同。

✅ 方法一:排序作为哈希表 key

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string, vector<string>> mp;for (const string& str : strs){string key = str;sort(key.begin(), key.end()); // 将字符串排序,作为哈希表 keymp[key].push_back(str);       // 将原字符串加入对应分组}vector<vector<string>> res;for (const auto& [key, group] : mp) {res.push_back(group);         // 提取所有 value 即为分组结果}return res;}
};

🔍 时间复杂度

  • 排序每个字符串 O(k log k),总共 n 个字符串 ⇒ O(nk log k)

💾 空间复杂度

  • 需要额外存储 HashMap 和结果集 ⇒ O(nk)

✅ 方法二:计数字符频率作为 key

class Solution 
{
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string, vector<string>> mp;for (string& str : strs) {vector<int> count(26, 0);for (char ch : str) {count[ch - 'a']++;}// 手动编码计数数组,例如 "aabbc" → "a2b2c1"string key;for (int i = 0; i < 26; ++i) {if (count[i] > 0) {key += (char)('a' + i);key += to_string(count[i]);}}mp[key].push_back(str);}vector<vector<string>> res;for (auto& [key, group] : mp) {res.push_back(group);}return res;}
};

🔍 时间复杂度

  • 每个字符串统计字母频率 O(k),总共 n 个 ⇒ O(nk)

💾 空间复杂度

  • 存储每个字符串、HashMap 以及编码 key ⇒ O(nk)
http://www.xdnf.cn/news/12027.html

相关文章:

  • AI赋能国风艺术:穿越时空的诗词画卷如何诞生?
  • Numpy——通用函数、向量化、基础的统计计算
  • Comparable和Comparator
  • React-native实战系列
  • 每日算法-250604
  • Sui Prover:将形式化验证引入 Sui
  • yFiles:专业级图可视化终极解决方案
  • 2025年6月4日第一轮
  • Unity大型项目资源框架
  • 运行labelme
  • 【C/C++】析构函数好玩的用法:~Derived() override
  • day44python打卡
  • AI 基础应用与提示词工程
  • 深入理解计算机进制:从原理到 C++ 实现
  • WireShark相关技巧
  • 根据重叠点云生成匹配图像之间的对应点对
  • 【二分图 图论】P9384 [THUPC 2023 决赛] 着色|普及+
  • AI数字人软件开发:赋能企业数字化转型,打造智能服务新标杆
  • c#压缩与解压缩-SharpCompress
  • MySQL EXPLAIN 命令详解
  • 为什么选择电商平台API接口服务商?
  • 剑指offer16_在O(1)时间删除链表结点
  • Google AI 模式下的SEO革命:生成式搜索优化(GEO)与未来营销策略
  • 假票入账会怎样?
  • 沉金电路板有哪些特点?
  • JDK 8 到 JDK 24 新特性大全
  • [3-02-01].第13节:三方整合 - Jedis客户端操作Redis
  • 基于VMD-LSTM融合方法的F10.7指数预报
  • return this;返回的是谁
  • 遍历继承QObject的对象的属性