思路分析:首先,思考如何判断“异位词”,直观的想到,将string内部按照字母序排序,之后便可以直接对比,排序后相等的string就是异位词。其次,想到可以利用哈希表来进行字符串vector的存储(即一个排序成功的key,对应一组string)
49.字母异位词分组
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string>> mp;
for (string& str: strs) {
string key = str;
sort(key.begin(), key.end());//对str的副本key进行排序,形成“特征”,用于“分类”
mp[key].emplace_back(str);
}
vector<vector<string>> ans;
for (auto it = mp.begin(); it != mp.end(); ++it) {
ans.emplace_back(it->second);//将按照排序后string分完类的vector压入二维vector
}
return ans;
}
};