Group Anagrams(leetcode)
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.
代码:
class Solution {
public:
vector<vector<string> > groupAnagrams(vector<string>& strs) {
vector<string>o_strs = strs;
for (int i = 0; i < o_strs.size(); ++i) {
sort(o_strs[i].begin(), o_strs[i].end());
}
unordered_map<string, vector<int> > u_map;
for (int i = 0; i < o_strs.size(); ++i) {
u_map[o_strs[i]].push_back(i);
}
vector<vector<string> > solution;
for (unordered_map<string, vector<int> >::iterator it = u_map.begin(); it != u_map.end(); it++) {
vector<string> temp;
for (int i = 0; i < (*it).second.size(); i++) {
temp.push_back(strs[(it->second)[i]]);
}
solution.push_back(temp);
}
return solution;
}
};