【leetcode刷题日记】lc.49-字母异位词分组

目录

1.题目

2.代码

3.代码解释

3.1.方法说明

3.2.实现步骤


1.题目

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

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

示例 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] 仅包含小写字母

2.代码

class Solution {
public:
    static bool cmp(char a,char b)
    {
        return a<b;
    }
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string,vector<string> > mp;
        vector<vector<string>> res;
        res.clear();
        for(int i=0;i<strs.size();i++)
        {
            string str = strs[i];
            string key = strs[i];
            sort(key.begin(),key.end(),cmp);
            mp[key].push_back(str);
        }
        for(auto it=mp.begin();it!=mp.end();it++)
        {
            vector<string> tmp = it->second;
            res.push_back(tmp);
        }
        return res;
    }
};

3.代码解释

3.1.方法说明

  • 函数groupAnagrams

  • 输入:字符串数组 strs

  • 输出:分组的异位词二维数组

3.2.实现步骤

  1. 哈希表映射:使用 unordered_map<string, vector<string>> mp,键为排序后的字符串,值为原始字符串组成的列表。遍历每个字符串,将其排序后的结果作为键,原始字符串存入对应的列表中。

  2. 字符串排序:对每个字符串进行升序排序,生成唯一标识异位词的键。例如,"eat" 和 "tea" 排序后均为 "aet"。使用 static bool cmp(char a, char b) 定义排序规则。

  3. 收集结果:遍历哈希表,将所有值(分组后的列表)存入结果数组 res 中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值