Given an array of strings, group anagrams together.
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
,
Return:
[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ]
Note: All inputs will be in lower-case.
题意
对字符数组进行分组,具备相同字母而次序不同的分在一组。
题解
借用map来存储相同字母的字符串即可
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string> > group;
for (const auto &s : strs) {
string key = s;
sort(key.begin(), key.end());
group[key].push_back(s);
}
vector<vector<string>> result;
for (auto it = group.begin(); it != group.end(); it++) {
result.push_back(it->second);
}
return result;
}
};