码迷,mamicode.com
首页 > 其他好文 > 详细

Anagrams

时间:2014-10-06 12:02:00      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   ar   for   sp   div   

Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.

For example:

Input: ["tea","and","ate","eat","den"]

Output: ["tea","ate","eat"]

 

anagrams是某个单词打乱其字母顺序形成的新单词,新单词和原单词包含的字母种类相同,每个字母的数目也相同。

因此可以使用哈希表存储单词的原型,没扫描一个单词,如果该单词原型在哈希表中,那么该单词就输出到结果中

 1 class Solution {
 2 public:
 3     typedef unordered_map<string, int> UMP;
 4     
 5 public:
 6     vector<string> anagrams(vector<string> &strs) {
 7         UMP htable;
 8         vector<string> ans;
 9         for(int i=0; i<strs.size(); ++i) {
10             string str = strs[i];
11             sort(str.begin(), str.end());   //排序单词,认为其字典排序为其原型
12             UMP::iterator iter = htable.find(str);  //在哈希表中查找其原型
13             if( iter == htable.end() ) {    //找不着,就在哈希表中添加其原型
14                 htable.insert( make_pair(str, i) );
15             }
16             else {  //找到
17                 if( iter->second != -1 ) {  //如果结果中没有输出推导出原型的单词,则输出
18                     ans.push_back(strs[iter->second]);
19                     iter->second = -1;
20                 }
21                 ans.push_back(strs[i]); //哈希表中有原型,则输出该单词
22             }
23         }
24         return ans;
25     }
26 };

 

Anagrams

标签:style   blog   color   io   使用   ar   for   sp   div   

原文地址:http://www.cnblogs.com/bugfly/p/4007973.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!