给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意次序返回结果列表。
字母异位词 是由重新排列源单词的全部字母得到的一个新单词。
- 排序字符:对于每个字符串,我们将其字符排序,得到一个唯一的 "排序后的字母" 作为该字符串的标识符(key)。
- 使用哈希表:利用哈希表(unordered_map)来将排序后的字母作为键(key),将相同字母异位词的字符串作为值(value)。假如两个字符串排序后得到相同的结果,它们属于同一组。
- 终极结果:哈希表中存储了多个键值对,其中每个键对应的值是一个字母异位词列表。
- class Solution {
- public:
- vector<vector<string>> groupAnagrams(vector<string>& strs) {
- unordered_map<string, vector<string>> anagrams;
- for (const string& str : strs) {
- string sorted_str = str;
- sort(sorted_str.begin(), sorted_str.end());
- anagrams[sorted_str].push_back(str);
- }
- vector<vector<string>> result;
- for (auto& pair : anagrams) {
- result.push_back(pair.second);
- }
- return result;
- }
- };
复制代码
- unordered_map<string, vector<string>> anagrams;:使用哈希表 anagrams 来存储字母异位词。键是排序后的字符串,值是一个包罗全部字母异位词的字符串数组。
- 遍历每个字符串:
- 对每个字符串 str,我们创建它的副本 sorted_str。
- 使用 sort() 函数对 sorted_str 进行排序。
- 将排序后的 sorted_str 作为哈希表的键,原字符串 str 被添加到相应的值(即字母异位词组)中。
- 提取结果:
- 哈希表中的每个值都是一个字母异位词的组,我们将全部这些组收集到 result 数组中并返回。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |