Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
solution: 遍历strs,排序每一个strs的字符串,用一个map<string, vector<string>>保存排序后的结果为key,value以vector形式存储排序前的字符串,然后构成整个map,遍历map,将大小大于一的这种集合输出。
class Solution {
public:
vector<string> anagrams(vector<string> &strs) {
// Note: The Solution object is instantiated only once and is reused by each test case.
vector<string>res;
if(strs.size() <= 1)
return res;
map<string,vector<string>>result;
for(int i = 0; i < strs.size(); i++)
{
string str = strs[i];
sort(str.begin(), str.end());
if(result.find(str) == result.end())
{
vector<string>temp;
temp.push_back(strs[i]);
result[str] = temp;
}
else
{
result[str].push_back(strs[i]);
}
}
map < string, vector<string> >::iterator pos = result.begin();
for(; pos != result.end(); pos++)
{
vector<string> temp = pos->second;
if( temp.size() > 1 )
res.insert(res.end(), temp.begin(), temp.end());
}
return res;
}
};