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& ...
随机推荐
- Eclipse 最全快捷键
英文的
- Design pattern---观察者模式
观察者模式:发布/订阅模式,当某对象(被观察者)状态发生改变时所有订阅该对象的观察者对象(观察者)都将更新自己 成员(4种): 1.抽象被观察者:将所有的观察者对象的引用存入一个集合,并且定义了添加 ...
- windows服务相关
1. 卸载服务 cmd 命令: sc delete + 服务名 2. 注册服务 cmd 命令 : 服务名+ install 3.mysql 启动服务步骤 1) 初始化密码:mysqld -initi ...
- Gson手动序列化POJO(工具类)
gson2.7版本 只是简单的工具类(练习所用): package pojo; import javax.xml.bind.annotation.XmlSeeAlso; import com.goog ...
- C++指针之防不胜防
我们在使用指针时,经常会出现下面几种错误: 1) 内存分配未成功,却使用了它. 编程新手常犯这种错误,因为他们没有意识到内存分配会不成功.常用解决办法是,在使用内存之前检查指针是否为NULL.如果指针 ...
- MongoDB整库备份与还原以及单个collection备份、恢复方法
mongodb数据库维护离不开必要的备份.恢复操作,而且一般不会出错,所以我们在使用的时候大部分时候使用备份和恢复操作就可以了 mongodump.exe备份的原理是通过一次查询获取当前服务器快照 ...
- Android开发--ScrollView的应用
1.简介 当内容无法全部显示时,需要采取滚动的方式获取其与内容.其中,ScrollView为垂直滚动控件,HorizontalScrollView为水平滚动控件. 2.构建
- ios基础篇(十六)——UIWebView的基本使用
UIWebView是内置的浏览器控件,可以用它来浏览网页.打开文档等.UIWebView是一个混合体,具体的功能控件内置的,实现一些基本的功能.UIWebView可以查看Html网页,pdf文件,do ...
- iOS开发UI篇—xib的简单使用
iOS开发UI篇—xib的简单使用 一.简单介绍 xib和storyboard的比较,一个轻量级一个重量级. 共同点: 都用来描述软件界面 都用Interface Builder工具来编辑 不同点: ...
- JavaWeb chapter6 对象作用域
1. 对象属性所在作用域:谁能看到并使用这个属性,以及它能存活多久. 2. 应用上下文ServletContext对象作用域: 对于整个Web应用,只有一个ServletContext对象,而且在 ...