Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
这个是找出所有的回购词
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
#include <map>
#include <iostream>
using std::vector;
using std::string;
using std::map;
using std::cout;
class Solution {
public:
vector<string> anagrams(vector<string>& strs) {
vector<string> temp;
map<string,vector<string>> m;
for_each(strs.begin(),strs.end(),[&](string str)
{
string n= str;
sort(n.begin(),n.end());
m[n].push_back(str);
});
for (auto iter = m.begin();iter != m.end();++iter)
{
if (iter->second.size() > 1)
{
copy(iter->second.begin(),iter->second.end(),back_inserter(temp));
}
}
return temp;
}
};
int main()
{
Solution sol;
vector<string> v;
v.push_back("tea");
v.push_back("tae");
v.push_back("and");
v.push_back("dan");
sol.anagrams(v);
}