49.字母异味词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> res;
unordered_map<string,int> r;
int map_number = 0;
for(auto str : strs){
string now = str;
sort(now.begin(),now.end());
if(r.find(now) != r.end()){
res[r[now]].push_back(str);
} else{
r[now] = map_number;
map_number++;
vector<string> v(1,str);
res.push_back(v);
}
}
return res;
}
};
解答:建立一个哈希表来标记已经访问过的元素。遍历整个个字符串数组,把当前字符串排序,如果这个元素在哈希表中出现过那么就将这个元素放入这个对应的子容器中,如果这个元素没有出现在哈希表中就给他建立一个新的子容器。最后返回res