给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
代码如下:
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string,vector<string>> mp;
for(auto & str : strs){
string key = str;
sort(key.begin(),key.end());
mp[key].emplace_back(str);
}
vector<vector<string>> res;
for(auto & i : mp){
res.emplace_back(i.second);
}
return res;
}
};
思路:拥有相同字母拼凑的单词,经过同一排序后的字符串相同,如{“eat”,"ate","tea"},经过排序后,它们都将变成"aet",因此用哈希表,key值为排序后的字符串,将排序之前的字符串添加到对应的key值下,最后遍历哈希表,将value存入待返回的res中