Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
Difficulty: Medium
典型的hash,用map做。
在此我得到了一个小启发,使用sort()重新排列字母比较会比较简单。
vector<string> anagrams(vector<string>& strs) {
int len = strs.size();
string s;
map<string,int> a;
vector<string> ans;
for(int i = 0;i<len;i++)
{
s = strs[i];
sort(s.begin(),s.end());
if(a.find(s) == a.end())
a[s] = i;
else
{
if(a[s]>=0)
{
ans.push_back(strs[a[s]]);
a[s] = -1;
}
ans.push_back(strs[i]);
}
}
return ans;
}