题目描述:
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
题目解析:
很简单,本题可以采用哈希表的形式来进行求解。具体做法为:在原始信息和哈希映射使用的实际键之间建立映射关系:将单词字母按照字母顺序表排列,若排列结果相同,则为字母异位词。
class Solution{
public:
vector<vector<int>> groupAnagrams(vector<string>& strs){
unordered_map<string, vector<string>> hashmap; //创建【字符串,字符串组】的哈希表
for(auto s:strs) //表示进行遍历
{
string tmp = s;
sort(tmp.begin(),tmp.end()); //按照字母表顺序排序
hashmap[tmp].push_back(s); //表示["aet",[eat,ate,tea]]
}
int len=hashmap.size(); //计算哈希表的长度
vector<vector<string>> res(len); //初始化res的长度为len
int index=0;
for(auto i:hashmap) //表示遍历复制i=hashmap
{
res[index]=i.second; //表示同一个hashmap对应的索引,可以得到全部的键值
++index;
}
return res;
}
};