[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>.

posted @ 2014-09-15 18:31  Lancelod_Liu  阅读(214)  评论(0编辑  收藏  举报