力扣49:字母异形词分组
力扣49:字母异形词分组
- 题目
- 思路
- 代码
题目
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
思路
想要将字母异位词放到一个数组中我们必须有个办法来判断哪些字符串是字母异位词,所以我们可以把数组中每个字符串进行排序因为字母异位词包含的单词都是相同的只是顺序不同所以我们只要一排序就变得相同了。
所以我们可以创建一个哈希表,键值即key我们用排序后的字符串,value我们用一个字符串数组。这样我们只要遇到每个字符串先对它进行排序然后把原型词存储到对应的字符串数组即可。
代码
class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string, vector<string>> um;for (auto& ch : strs) {string s = ch;//对strs中的字符串进行排序//让异位词变得相同sort(s.begin(), s.end());//再将原型词插入到排序好的字符串对应的数组中um[s].push_back(ch);}vector<vector<string>> res;for (auto & [ s, vs ] : um) {res.push_back(vs);}return res;}
};