LeetCode-Group Anagrams
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: All inputs will be in lower-case.
public class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
if(strs==null || strs.length==0){
return null;
}
List<List<String>> resList=new ArrayList<List<String>>();
Map<String, List<String>> map=new HashMap<String, List<String>>();
for(int i=0; i<strs.length; i++){
String str=strs[i];
char[] chars=str.toCharArray();
Arrays.sort(chars);
String key=new String(chars);
if(map.containsKey(key)){
List<String> strList=map.get(key);
strList.add(str);
map.put(key,strList);
}
else{
List<String> strList=new ArrayList<String>();
strList.add(str);
map.put(key, strList);
}
}
for(String key : map.keySet()){
resList.add(map.get(key));
}
return resList;
}
}
二刷:注意能把containsKey用在object上的条件
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> resList = new ArrayList<List<String>>();
if(strs == null || strs.length == 0){
return resList;
}
Map<Character, Integer> charMap = new HashMap<>();
Map<Map<Character, Integer>, List<String>> strMap = new HashMap<>(); for(String str : strs){
Map<Character, Integer> key = generateCharMap(str);
//The reason we can use containsKey here is because the key implements equals function
if(strMap.containsKey(key)){
List<String> list = strMap.get(key);
list.add(str);
strMap.put(key, list);
}
else{
List<String> list = new ArrayList<>();
list.add (str);
strMap.put(key, list);
}
}
for(Map<Character, Integer> key : strMap.keySet()){
resList.add(strMap.get(key));
}
return resList;
} private Map<Character, Integer> generateCharMap(String str){
Map<Character, Integer> map = new HashMap<>();
for(char c : str.toCharArray()){
map.put(c, map.getOrDefault(c,0)+1);
}
return map;
} }
LeetCode-Group Anagrams的更多相关文章
- [LeetCode] Group Anagrams 群组错位词
Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...
- leetcode@ [49] Group Anagrams (Hashtable)
https://leetcode.com/problems/anagrams/ Given an array of strings, group anagrams together. For exam ...
- 【一天一道LeetCode】#49. Group Anagrams
一天一道LeetCode系列 (一)题目 Given an array of strings, group anagrams together. For example, given: [" ...
- Group Anagrams - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Group Anagrams - LeetCode 注意点 字母都是小写的 解法 解法一:用一个字符串表示strs[i]中出现的字母,比如:abc-> ...
- LeetCode解题报告—— Group Anagrams & Pow(x, n) & Spiral Matrix
1. Group Anagrams Given an array of strings, group anagrams together. For example, given: ["eat ...
- LeetCode 49: 字母异位词分组 Group Anagrams
LeetCode 49: 字母异位词分组 Group Anagrams 题目: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. Given an array o ...
- [LeetCode] 49. Group Anagrams 分组变位词
Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...
- 【LeetCode】49. Group Anagrams 解题报告(Python & Java & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序+hash 日期 题目地址:https://le ...
- LeetCode - 49. Group Anagrams
49. Group Anagrams Problem's Link ------------------------------------------------------------------ ...
- 【Leetcode】【Medium】Group Anagrams
Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...
随机推荐
- linux重启命令学习
Linux关闭和重启系统一般使用相同的命令可以实现. 在Linux系统下常用在关机/重启命令有shutdown.halt.reboot和init,但每个命令的内部工作过程是不同的. 1.shutdow ...
- NGUI Camera's raycast hit through the UI Layer issue
Raycast into GUI?http://forum.unity3d.com/threads/raycast-into-gui.263397/ << ; Ray myray = UI ...
- SPSS数据分析—分段回归
在SPSS非线性回归过程中,我们讲到了损失函数按钮可以自定义损失函数,但是还有一个约束按钮没有讲到,该按钮的功能是对自 定义的损失函数的参数设定条件,这些条件通常是由逻辑表达式组成,这就使得损失函数具 ...
- SPSS数据分析—相关分析
相关系数是衡量变量之间相关程度的度量,也是很多分析的中的当中环节,SPSS做相关分析比较简单,主要是区别如何使用这些相关系数,如果不想定量的分析相关性的话,直接观察散点图也可以. 相关系数有一些需要注 ...
- ASP.NET网站版本自动更新程序及代码[转]
1.自动更新程序主要负责从服务器中获取相应的更新文件,并且把这些文件下载到本地,替换现有的文件.达到修复Bug,更新功能的目的.用户手工点击更新按钮启动更新程序.已测试.2.环境VS2008,采用C# ...
- jquery ui学习笔记
- PowerDesigner导出建表sql脚本
1 按照数据库类型,切换数据库. Database-> Change Current DBMS... 2.设置保存路径和文件名称
- ajax 异步插入图片到数据库(单图上传)
其实也没啥 如图: 点击按钮选择图片,选择完成后 无需点击确定 ,自动上传到服务器指定文件夹 然后插入到数据库中. 下面来看看这要代码 index.php <!DOCTYPE HTML> ...
- Java 泛型,了解这些就够用了。
此文目录: Java泛型是什么? 通常的泛型的写法示例 类型擦除 为什么要使用Java泛型 通过示例了解PECS原则 一.Java泛型是什么? 官方定义 泛型是Java SE 1.5的新特性,泛型的本 ...
- MySQL 句柄数占用过多的解决方法
在Windows下安装MySQL ,用了官方的配置向导生成了my.ini,本以为很安稳了,谁知十多个小时过去之后,系统响应非常慢,看资源管理器的性能卡,发现句柄数竟然达到了10万!怪不得无论使用什么程 ...