题目: 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:
1.For the return value,each inner list’s elements must follow the lexicographic order.
2.All inputs will be in lower-case.
思路: 哈希表实现
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> result;
unordered_map<string,int> hashmap;
string temp;
int pos=0;
for(int i=0;i<strs.size();++i)
{
temp=strs[i];
sort(temp.begin(),temp.end());
if(hashmap.find(temp)==hashmap.end())
{
hashmap[temp]=pos++;
result.push_back(vector<string>(1,strs[i]));
}
else
{
result[hashmap[temp]].push_back(strs[i]);
}
}
for(int i=0;i<result.size();++i)
sort(result[i].begin(),result[i].end());
return result;
}
};