Group Anagrams
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:
- For the return value, each inner list's elements must follow the lexicographic order.
- All inputs will be in lower-case.
这道题目让我直接意识到,STL在处理字符串型数组时,有多么方便快捷,这里涉及到几个数据结构,有map,unordered_map,multiset等,后续想先仔细学一下stl中这些数据结构的使用方法,然后再刷题。
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string,multiset<string>>mp;
for(auto s:strs){
string t = s;
sort(t.begin(),t.end());
mp[t].insert(s);
}
vector<vector<string>> Anagrams;
for(auto m:mp){
vector<string>anagram(m.second.begin(),m.second.end());
Anagrams.push_back(anagram);
}
return Anagrams;
}
};