题目描述

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]

说明:

  • 所有输入均为小写字母。
  • 不考虑答案输出的顺序。

解题思路

利用哈希的思想解题。构造一个字符串到字符串集合的映射数组map,对于每一个字符串,首先对其按字典序从小到大排序,这样有相同字母的异位词就可以映射为同一字符串,然后在map中找到对应的集合并添加原字符串。遍历完给定的字符串数组后,再依次把map中的分组添加到结果集合中。

代码

 class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> res;
map<string, vector<string>> strToVec;
for(string str: strs){
string emp = str;
sort(emp.begin(), emp.end());
strToVec[emp].push_back(str);
}
for(auto iter: strToVec)
res.push_back(iter.second);
return res;
}
};

最新文章

  1. 微博开放平台api使用
  2. java 重载、重写、构造函数详解
  3. 在MAC OS X上如何启用crontab?
  4. How to override create,write,unlink method in Odoo v8
  5. 由单例模式学到:Lazy&lt;T&gt;
  6. [iOS基础控件 - 6.10.1] PickerView 餐点搭配Demo
  7. 《MFC游戏开发》笔记二 建立工程、调整窗口
  8. [置顶] 推荐12款很棒的HTML5开发框架和开发工具
  9. 序列化layer创建的弹出表单并ajax提交
  10. 远程代码仓库URL地址变更后本地仓库的配置方法
  11. MSSQL优化之————探索MSSQL执行计划
  12. async、await在ASP.NET[ MVC]中之线程死锁的故事
  13. Delphi for iOS开发指南(3):创建一个FireMonkey iOS应用程序
  14. EF多个上下文迁移
  15. ubuntu16.04 安装symfony3.3.11 碰到的问题:extension dom is required | oops an error occurred 500
  16. spring_150902_hibernatedaosupport
  17. Windows搭建python开发环境[一]
  18. 数据库case,when学习
  19. windows测试模式
  20. SecureCRT中的vim出现1H特殊字符

热门文章

  1. 虚拟机无法启动,提示:无法打开内核功能扩展“com.vmware.kext.vmci”: 无此文件或目录
  2. oracle重置dba用户密码
  3. MySQL查询一张表有多少个字段
  4. python、第六篇:视图、触发器、事务、存储过程、函数
  5. 第十篇.2、python并发编程之多进程
  6. poj 1953 World Cup Noise (dp)
  7. orace result cache解析
  8. A Neural Probabilistic Language Model (2003)论文要点
  9. 使用putty对linux与windows之间的文件传输
  10. java将一数组乱序排列