当前位置: 首页> 教育> 幼教 > LeetCode49. 字母异位词分组(2024秋季每日一题 4)

LeetCode49. 字母异位词分组(2024秋季每日一题 4)

时间:2025/8/28 23:37:40来源:https://blog.csdn.net/qq_46456049/article/details/141598358 浏览次数:0次

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

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

1 < = s t r s . l e n g t h < = 1 0 4 1 <= strs.length <= 10^4 1<=strs.length<=104
0 < = s t r s [ i ] . l e n g t h < = 100 0 <= strs[i].length <= 100 0<=strs[i].length<=100
s t r s [ i ] strs[i] strs[i] 仅包含小写字母


思路:

  • 遍历给定的字符串数组,对每一个字符串,对其进行排序,如果不存在与 哈希表,则新建一个字符串数组,
  • key=排序后的字符串,value=字符串数组的下标,hash[排序后的字符串]=字符串数组的下标,
  • 例子:“ate”、“eat”,排序后都是 “aet”,所以可以通过排序判断 “字母异位词” 是否已经存在,
  • 存在的话,通过 hash 表找出对应的数组,加入进去即可。
class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vector<string>> res;unordered_map<string, int> h;for(const string& s: strs){string back_str = s;sort(back_str.begin(), back_str.end());if(h.count(back_str)){int idx = h[back_str];res[idx].push_back(s);}else{vector<string> a;a.push_back(s);res.push_back(a);h[back_str] = res.size() - 1;}}return res;}
};
关键字:LeetCode49. 字母异位词分组(2024秋季每日一题 4)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: