#include <iostream>
#include <stack>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs)
{
vector<vector<string>> result;
map<string,vector<string>> myMap;
if(strs.size() == 0)
{
return result;
}
for(const string& s : strs)
{
string temp = s;
sort(temp.begin(),temp.end());
std::vector<string>& dest = myMap[temp];
dest.emplace_back(s);
}
cout<< myMap["abt"].size() <<endl;
for (auto& kv : myMap) // kv: key value
{
result.emplace_back(std::move(kv.second));
}
return result;
}
};
int main(int argc, const char * argv[])
{
Solution mySolution;
vector<string> myStrings {"eat", "tea", "tan", "ate", "nat", "bat"};
auto result = mySolution.groupAnagrams(myStrings);
for(vector<string> v: result)
{
//cout << v.size() << endl;
for(string s: v)
{
cout << s << " ";
}
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFNvbHV0aW9uIHsKcHVibGljOgogICAgdmVjdG9yPHZlY3RvcjxzdHJpbmc+PiBncm91cEFuYWdyYW1zKHZlY3RvcjxzdHJpbmc+JiBzdHJzKQogICAgewogICAgICAgIHZlY3Rvcjx2ZWN0b3I8c3RyaW5nPj4gcmVzdWx0OwogICAgICAgIG1hcDxzdHJpbmcsdmVjdG9yPHN0cmluZz4+IG15TWFwOwoKICAgICAgICBpZihzdHJzLnNpemUoKSA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICB9CgogICAgICAgIGZvcihjb25zdCBzdHJpbmcmIHMgOiBzdHJzKQogICAgICAgIHsKICAgICAgICAgICAgc3RyaW5nIHRlbXAgPSBzOwogICAgICAgICAgICBzb3J0KHRlbXAuYmVnaW4oKSx0ZW1wLmVuZCgpKTsKICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RyaW5nPiYgZGVzdCA9IG15TWFwW3RlbXBdOwogICAgICAgICAgICBkZXN0LmVtcGxhY2VfYmFjayhzKTsKICAgICAgICB9CgogICAgICAgIGNvdXQ8PCBteU1hcFsiYWJ0Il0uc2l6ZSgpIDw8ZW5kbDsKIAogICAgICAgIGZvciAoYXV0byYga3YgOiBteU1hcCkgIC8vIGt2OiBrZXkgdmFsdWUKICAgICAgICB7CiAgICAgICAgCXJlc3VsdC5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKGt2LnNlY29uZCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KfTsKCgppbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKewogICAgU29sdXRpb24gbXlTb2x1dGlvbjsKICAgIHZlY3RvcjxzdHJpbmc+IG15U3RyaW5ncyB7ImVhdCIsICJ0ZWEiLCAidGFuIiwgImF0ZSIsICJuYXQiLCAiYmF0In07CiAgICBhdXRvIHJlc3VsdCA9IG15U29sdXRpb24uZ3JvdXBBbmFncmFtcyhteVN0cmluZ3MpOwoKICAgIGZvcih2ZWN0b3I8c3RyaW5nPiB2OiByZXN1bHQpCiAgICB7CiAgICAgICAgLy9jb3V0IDw8IHYuc2l6ZSgpIDw8IGVuZGw7CiAgICAgICAgZm9yKHN0cmluZyBzOiB2KQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCBzIDw8ICIgIjsKICAgICAgICB9CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0gICAgICAg