首页 > 代码库 > Leetcode#49 Anagrams

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     }

 

Leetcode#49 Anagrams