49. Group Anagrams

来源:互联网 发布:java两个时间相减 编辑:程序博客网 时间:2024/05/29 16:05

Given an array of strings, group anagrams together.

For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
Return:

[  ["ate", "eat","tea"],  ["nat","tan"],  ["bat"]]

Note: All inputs will be in lower-case.

class Solution {public:vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vector<string>> res;multimap<string,string> mm;for(int i=0;i<strs.size();i++){string tmp=strs[i];sort(tmp.begin(),tmp.end());mm.insert(pair<string,string>(tmp,strs[i]));}multimap<string,string>::iterator iter=mm.begin();while(iter!=mm.end()){vector<string> group;int cnt=mm.count(iter->first);for(int i=0;i<cnt;i++,iter++){group.push_back(iter->second);}res.push_back(group);}return res;}};

还有一种方法,将每个字符当做一个质数,乘机相等的就是Anagrams。但是要求字符串的长度不能太大。

0 0