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> retVector;
map<string, vector<string>> stringMap;
int len = strs.size();
for (int i=0; i<len; i++)
{
string str = strs[i];
sort(str.begin(), str.end());
stringMap[str].push_back(strs[i]);
}
map<string, vector<string>>::iterator itr=stringMap.begin();
while (itr != stringMap.end())
{
if (itr->second.size() > 1)
{
retVector.insert(retVector.end(), itr->second.begin(), itr->second.end());
}
++itr;
}
return retVector;
}
};