49. Group Anagrams
来源:互联网 发布:string数组去掉空格 编辑:程序博客网 时间:2024/05/01 23:09
题目:
Given an array of strings, group anagrams together.
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
,
Return:
[ ["ate", "eat","tea"], ["nat","tan"], ["bat"]]
Note:
- For the return value, each inner list's elements must follow the lexicographic order.
- All inputs will be in lower-case.
给定一个字符串数组,将相同字符的字符串分组。
note:
1、对于结果集,每一个内部集合元素都必须遵循字典顺序;
2、所有的输入集合都是小写字符;
思路:
先将输入字符串数组排序,按照字典顺序排序。之后将每个小字符串分解成字符数组之后,同样按照字典顺序排序之后作为map集合的键,将具有相同元素的字符串放到同一集合中,最后将map中的值转化为输出集。
代码:java版:34ms
public class Solution { public List<List<String>> groupAnagrams(String[] strs) { if(strs==null || strs.length==0){ return new ArrayList<List<String>>(); } Map<String, List<String>> map = new HashMap<String, List<String>>(); Arrays.sort(strs); //确定字典顺序 for(String s : strs){ char[] ca = s.toCharArray(); //将每一个字符串转换成字符数组 Arrays.sort(ca); //对字符数组排序 String keyStr = String.valueOf(ca); //将排序后的字符数组转换成字符串 if(!map.containsKey(keyStr)){ //如果map集合中没有该字符串,则添加新建一个 map.put(keyStr, new ArrayList<String>()); } map.get(keyStr).add(s); //将原字符串加入到对应的具有相同元素的map中 } return new ArrayList<List<String>>(map.values()); }}C++版:82ms
class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { unordered_map<string, multiset<string>> mapping; for(string str : strs){ //利用具有相同元素的字符串排序后作为键,具有相同字符的字符串作为值 string s = str; sort(s.begin(), s.end()); mapping[s].insert(str); } vector<vector<string>> result; for(auto map : mapping){ //将拥有相同元素的字符串按照字符顺序排序,并存储进结果集中 vector<string> anagram(map.second.begin(), map.second.end()); result.push_back(anagram); } return result; }};
0 0
- 49. Group Anagrams
- [leetcode] 49.Group Anagrams
- 49. Group Anagrams
- LeetCode 49. Group Anagrams
- [LeetCode]49. Group Anagrams
- leetcode 49. Group Anagrams
- 49. Group Anagrams LeetCode
- 49. Group Anagrams
- 49. Group Anagrams
- 49. Group Anagrams
- Leetcode 49. Group Anagrams
- 49. Group Anagrams
- LeetCode 49. Group Anagrams
- 49. Group Anagrams
- 49. Group Anagrams
- LeetCode 49. Group Anagrams
- [leetcode] 49. Group Anagrams
- LeetCode 49. Group Anagrams
- Kafka 下载和安装
- CSS字体中英文名称对照表
- 两个浮点数的比较:bccomp
- 【LaTeX】E喵的LaTeX新手入门教程(1)准备篇
- Maven错误日志记录(不定期更新)
- 49. Group Anagrams
- python 装饰器
- 从0开始学习 GitHub 系列之「加入 GitHub」
- 请教数据库如何建立多对多关系
- git使用详细介绍
- Android中判断当前API的版本号
- MFC,halcon混合编程 遍历目录文件夹下的图像并显示在对话框上
- ACM 数据结构 线段数 HDU 1166 敌兵布阵
- 【LaTeX】E喵的LaTeX新手入门教程(2)基础排版