首页 > 代码库 > Anagrams

Anagrams

Anagrams

Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.
 

anagrams特点:单词里的字母的种类和数目是一样的,只是改变了字母的排列顺序。

 

 1 class Solution 2 { 3 public: 4   vector<string> anagrams(vector<string> &strs) 5   { 6     vector<string> ret; 7     vector<string> sort_strs(strs); 8     map<string, vector<int> > mymap; 9     map<string, vector<int> >::iterator it;10 11     for(int i=0; i<strs.size(); i++)12     {13       sort(sort_strs[i].begin(), sort_strs[i].end());     //对字符串进行排序,使得属于同一类回文构词的词具有相同的字符串。14       mymap[sort_strs[i]].push_back(i);                   //利用map不会插入同一主键的原则,统计字符串种类数,并记录字符串在原始strs中的位置。15     }16 17     for(it=mymap.begin(); it!=mymap.end(); it++)   //遍历统计结果18     {19       if((*it).second.size()>1)     //字符串出现的次数为两次以上,则它所对应的原始字符串符合题目要求。20       {21         for(int i=0; i<(*it).second.size(); i++)   //遍历该排序字符串出现在strs中的位置,得到原始字符串,压入ret。22           ret.push_back(strs[(*it).second[i]]);23       }24     }25 26     return ret;27   }28 };

 

Anagrams