题目:
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
程序:
class Solution {
public:
vector<string> anagrams(vector<string> &strs) {
vector<string> result;
int l = strs.size();
if(l == 0)
return result;
map<string,int> mapping;
for(int i=0;i<l;i++)
{
string tmp = strs[i];
sort(tmp.begin(),tmp.end());
if(mapping.find(tmp) == mapping.end())
mapping[tmp] = i;
else{
if(mapping[tmp] >= 0)
{
result.push_back(strs[mapping[tmp]]);
mapping[tmp] = -1;
}
result.push_back(strs[i]);
}
}
return result;
}
};
点评:
哈希表,降低时间复杂度