Leetcode#49 Anagrams

原题地址

Anagram:变位词。两个单词是变位词关系的条件是:组成单词的字符相同,只是顺序不同

第一次看这道题看了半天没明白要干嘛,丫就不能给个样例输入输出么。。后来还是看网上其他人的总结知道是怎么回事。

通常的做法是:把字符串内的字符排序,这样,凡是变位词都会变成相同的单词。用map记录这样的单词出现了几个,如果超过1个,则加入结果集中。

代码:

 1 vector<string> anagrams(vector<string> &strs) {
 2         vector<string> res;
 3         map<string, int> record;
 4         
 5         for (int i = 0; i < strs.size(); i++) {
 6             string tmp = strs[i];
 7             sort(tmp.begin(), tmp.end());
 8             map<string, int>::iterator it = record.find(tmp);
 9             if (it == record.end())
10                 record.insert(pair<string, int>(tmp, 1));
11             else 
12                 it->second++;
13         }
14         
15         for (int i = 0; i < strs.size(); i++) {
16             string tmp = strs[i];
17             sort(tmp.begin(), tmp.end());
18             map<string, int>::iterator it = record.find(tmp);
19             if (it->second > 1)
20                 res.push_back(strs[i]);
21         }
22         
23         return res;
24     }
原文地址:https://www.cnblogs.com/boring09/p/4251793.html