49. Group Anagrams
我这里说的不是常规解法,用到了一种巧妙地解题思路或者说是一种数据结构的特性,对于这道题我们可以用hash_map 来实现存储是一个非常高效的方法。废话不多说上代码。
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
int m = strs.size();
vector<vector<string>>res;
if (m == 0)
return res;
unordered_map<string, vector<string>> mp;
for (int i = 0; i < m; i++)
{
string temp = strs[i];
sort(temp.begin(), temp.end());
mp[temp].push_back(strs[i]);
}
for (auto& it : mp)
res.push_back(it.second);
return res;
}
};
从上面可以看到首先每次取出一个数据,之后按照字典排序,为什么按照字典排序我就不解释了吧这是一个关键的点,之后将字典排序之后的数值作为Key,原始数据作为Value存到数据里,那么这样可以保证所有具有相同字符的会被存放到一个数组里面,那么么这题就解出来了。