[LeetCode系列] 变序词查找问题(Anagrams)

给定一系列词, 找出其中所有的变序词组合.

Note: 变序词 - 组成字符完全相同但次序不同的单词. 如dog和god, ate和eat.

 

算法描述: 使用map<string, vector<string> >存储所有的结果. 最后将map中size > 1的vector<string>插入到结果中.

 

代码:

 1 class Solution {  2 public:  3     vector<string> anagrams(vector<string> &strs) {  4         vector<string> res;  5         map<string, vector<string> > rec;  6         if (strs.size() == 0) return res;  7         

 8         for (string s : strs) {  9             string ts(s); 10  sort(ts.begin(), ts.end()); 11  rec[ts].push_back(s); 12  } 13         

14         for (auto map : rec) { 15             if (map.second.size() > 1) 16  res.insert(res.end(), map.second.begin(), map.second.end()); 17  } 18         

19         return res; 20  } 21 };

其中map.second代表的是map中的value, 即vector<string>.

你可能感兴趣的:(LeetCode)