首页 > 代码库 > [LeetCode系列] 变序词查找问题(Anagrams)

[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系列] 变序词查找问题(Anagrams)