博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode:Anagrams
阅读量:6225 次
发布时间:2019-06-21

本文共 978 字,大约阅读时间需要 3 分钟。

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,就是某个单词打乱其字母顺序形成的新单词,新单词和原单词包含的字母种类相同,每个字母的数目相同。           

 

用哈希map存储排序后的字符串,map中key为排序后字符串,value为该字符串对应的第一个原字符串在数组中的位置。如果value = -1,表示该字符串对应的第一个源字符串已经输出过

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class 
Solution {
public
:
    
vector<string> anagrams(vector<string> &strs) {
        
typedef 
unordered_map<string,
int
> Umap;
        
Umap hashtable;
        
vector<string> res;
        
for
(
int 
i = 0; i < strs.size(); i++)
        
{
            
string s = strs[i];
            
sort(s.begin(), s.end());
            
Umap::iterator ite = hashtable.find(s);
            
if
(ite == hashtable.end())
                
hashtable.insert(Umap::value_type(s, i));
            
else
            
{
                
if
(ite->second != -1)
                
{
                    
res.push_back(strs[ite->second]);
                    
ite->second = -1;
                
}
                
res.push_back(strs[i]);
            
}
        
}
        
return 
res;
    
}
};
本文转自tenos博客园博客,原文链接:http://www.cnblogs.com/TenosDoIt/p/3681402.html,如需转载请自行联系原作者
你可能感兴趣的文章
高仿Instagram 页面效果android特效
查看>>
2016 年总结
查看>>
将String转化成Stream,将Stream转换成String
查看>>
java路径Java开发中获得非Web项目的当前项目路径
查看>>
【工具使用系列】关于 MATLAB 遗传算法与直接搜索工具箱,你需要知道的事
查看>>
Kali-linux Arpspoof工具
查看>>
PDF文档页面如何重新排版?
查看>>
基于http协议使用protobuf进行前后端交互
查看>>
bash腳本編程之三 条件判断及算数运算
查看>>
php cookie
查看>>
linux下redis安装
查看>>
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
JavaScript 数据类型
查看>>
量子通信和大数据最有市场突破前景
查看>>
StringBuilder用法小结
查看>>
对‘初学者应该选择哪种编程语言’的回答——计算机达人成长之路(38)
查看>>
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
jquery的checkbox,radio,select等方法总结
查看>>