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

49.字母异位词

由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。

  • 遍历每一个字符串
  • 对每一个字符串进行排序
    • 比如 eat 排序为 aet,tea 排序为 aet
  • 将字符串压在哈希表的键的最后位置
    • 例如mp[aet].push_back(eat)和如mp[aet].push_back(tea)
    • 当要输出mp[aet]时,输出 second 值 成员即可。例如:[eat,tea]。
  • 然后用迭代器遍历哈希表,然后压到 ans 数组即可。
class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
    unordered_map<string, vector<string>> mp;
    for(string& str: strs){
        string key = str;
        sort(key.begin(),key.end());
        mp[key].push_back(str);
    }
    vector<vector<string>> ans;
    for(auto it = mp.begin(); it != mp.end(); ++it){
        ans.push_back(it->second);
    }
    return ans;
    }
};

时间复杂度:O(nklogk),其中 n 是 strs 中的字符串的数量,k 是 strs 中的字符串的的最大长度。

空间复杂度:O(nk)。


http://www.kler.cn/a/506037.html

相关文章:

  • 安装指南:LLaMA Factory、AutoGPTQ 和 vllm
  • Go语言中http.Transport的Keep-Alive配置与性能优化方法
  • 少一点If/Else - 状态模式(State Pattern)
  • C++算法第十五天
  • pycharm+pyside6+desinger实现查询汉字笔顺GIF动图
  • 主数据系统建设模式分析
  • 单芯片控制多个高性能伺服电机
  • 【Linux】多路转接select
  • PyTorch使用教程(1)—PyTorch简介
  • MongoDB 学习建模与设计思路--统计数据更新案例
  • Ubuntu本地部署网站
  • 实现小球不断往下滚动
  • LabVIEW实现油浸式变压器自主监测与实时报告
  • tplink rt406路由器如何配置端口映射
  • 人脸识别SDK(Android)之Github示例及集成详解
  • C语言初阶习题【29】杨氏矩阵
  • 代码随想录算法训练营day30
  • python爬虫根据需要查找某个链接并保存
  • 阿里云 EMR 发布托管弹性伸缩功能,支持自动调整集群大小,最高降本60%
  • 如何解决 XGBoost 控制台警告:版本不一致导致的模型加载问题
  • day10_Structured Steaming
  • 【MATLAB代码】CV和CA模型组成的IMM(滤波方式为UKF),可复制粘贴源代码
  • 神经网络常见操作(卷积)输入输出
  • 【微服务】SpringBoot 通用异常处理方案使用详解
  • PyTorch使用教程(3)-Tensor包
  • C语言预处理艺术:编译前的魔法之旅