leetcode 49 Group Anagram-程序员宅基地

lc49 Group Anagram

逻辑很简单,就是统计字母出现次数,然后将完全相同的字符串放入同一list

关键是怎么实现

统计的部分,可以通过将string排序,Arrays.sort(),或者像之前int[26]一样,

那么如何一次遍历,就能将相同字符串放入一个list呢?

这里用到了HashMap<String, List<String>>,String为key,用来判断排序过后的str是否相同,若是相同,直接原来的str加入List<String>

 

最后返回值就是把map的value转成List<List<String>>

可以用到一个小方法:

  return new ArrayList<List<String>>(map.values())

因为HashMap的value都是List<String>

 1 class Solution {
 2     public List<List<String>> groupAnagrams(String[] strs) {
 3         List<List<String>> res = new ArrayList<>();
 4         if(strs.length == 0)
 5             return res;
 6         HashMap<String, List<String>> map = new HashMap<>();
 7         
 8         
 9         for(int i=0; i<strs.length; i++){
10             char[] tmp = strs[i].toCharArray();
11             Arrays.sort(tmp);
12             String key = String.valueOf(tmp);
13             if(!map.containsKey(key))
14                 map.put(key, new ArrayList<String>());
15            map.get(key).add(strs[i]);
16         }
17         
18         return new ArrayList<List<String>>(map.values());
19     }
20 }

 

转载于:https://www.cnblogs.com/hwd9654/p/10958849.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30333885/article/details/96850650

智能推荐

mybatis plus 查询优化及扩展_拓展 mybatis plus querywrapper 类_liuec1002的博客-程序员宅基地

mybatis plus 中的查询优化传统查询弊端对于常规的mybatis单表查询,我们既可以采用LambdaQueryWrapper查询,也可以使用QueryWrapper查询。LambdaQueryWrapper具有防误写、规范代码等好处,但是缺点是无法在复杂的多表查询中使用。相比较来说,使用QueryWrapper编写查询更加灵活,可以适应更复杂的查询场景。我们首先看一个QueryWrapper查询的例子public List list (UserForm userForm) {Quer_拓展 mybatis plus querywrapper 类

【大数据面试】最爱问的Hbase面试(简单又详细,个人整理)-程序员宅基地

hdfs面试题MapReduce面试题hive面试题kafka面试题hbase面试题spark面试题flume面试题

List集合转String、String转List集合_listtostring后转回list-程序员宅基地

首先导入alibaba的jar包<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.54</version></dependency>构建集合对象 People people1 = new People("小范", 1, 23); People pe_listtostring后转回list

mysql秒级平滑升级_mysql平滑升级-程序员宅基地

原url: http://www.thebigdata.cn/JieJueFangAn/32349.html一、缘起  (1)并发量大,流量大的互联网架构,一般来说,数据库上层都有一个服务层,服务层记录了“业务库名”与“数据库实例”的映射关系,通过数据库连接池向数据库路由sql语句以执行:  如上图:服务层配置用户库user对应的数据库实例物理位置为ip(其实是一个内网域名)。  (2)随..._mysql平滑升级

【题解】 D - Unmerge_构造长度为2n的排列p-程序员宅基地

题目来源: Codeforces Round #658 (Div. 2)-D题意:给定一种构造序列的方法:对于两个长度为n且相互间没有重复元素的序列a,b,不断从两序列前取出较小的数添加到序列c后,构成长度为2n新序列c。现给出长度为2n的排列p,判断其是否为两个序列经上述方法构造而得。思路:考虑构造的过程:若a中连续一段均小于b中的某个数,即a[l-r]<b[i],那么肯定先取出a[l-r],再取出b[i];之后再从b[i]开始取连续的一段,均小于a[j]。其形成的序列为:a[l],…a[_构造长度为2n的排列p

Ubuntu:虚拟机:如果菜单被隐藏,如何使用?以及如何切换显示模式(是否全屏)_虚拟机状态栏被主机状态栏遮挡了-程序员宅基地

下面已说的很明了了1.如何使用工具菜单?右侧Crtl+home2.如何切换全屏右侧Ctrl+F_虚拟机状态栏被主机状态栏遮挡了

随便推点

iOS开发笔记--异步加载图片在TableView中的应用_ios tableview异步加载图片-程序员宅基地

//AsyncImageView.h文件@interface AsyncImageView : UIView {NSURLConnection* connection;NSMutableData* data;}@end_ios tableview异步加载图片

linux遍历文件查找字符串_linux遍历文件查字符串-程序员宅基地

grep 文本搜索grep match_patten file // 默认访问匹配行常用参数-o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行-c 统计文件中包含文本的次数grep -c “text” filename-n 打印匹配的行号-i 搜索时忽略大小写-l 只打印文件名在多级目录中对文本递归搜索(程序员搜代码的最爱):grep “class” . -R ..._linux遍历文件查字符串

单例模式--Java版本详解-程序员宅基地

单例模式转载原文链接-张新强单例模式1. 懒汉式单例1.1 最简单版本1.2 synchronized版本 [’sɪŋkrənaɪzd]  1.3 双重检查的版本(Double-Check)版本1.4 终极版本:volatile2. 饿汉式单例2.1 饿汉式单例的实现方式2.2 其他的实现方式2.2.1 Effective Java 1 —— 静态内部类...

ramdisk驱动程序分析-2.6内核--块设备驱动框架(1)-程序员宅基地

块设备驱动用到的重要结构体与函数如下红色表示部分。快设备驱动的模块加载函数中通常需要完成如下操作:1. 分配、初始化请求队列,绑定请求队列request_queue和请求函数;2. 分配、初始化gendisk,给gendisk的major,fops,queque等成员赋值,最后添加gendisk;3. 注册快设备驱动。本代码源自“LINUX设备驱动开发技术及

Spring Cloud Alibaba之服务限流降级Sentinel_spring cloud alibaba如何实现服务降级_CodeDevMaster的博客-程序员宅基地

Spring Cloud Alibaba之服务限流降级Sentinel。Sentinel的规则持久化、Sentinel的配置、Sentinel的使用、Sentinel与RestTemplate及Feign集成、Sentinel异常处理_spring cloud alibaba如何实现服务降级

全国大学生网络安全精英赛复赛笔记-程序员宅基地

1.1规划物理安全1.物理安全是保护信息稳定、可靠的运行,确保信息系统在对信息进行采集、传输、存储、处理等过程中不会因为自然因素、认为因素等原因导致服务中断、数据丢失、破坏等问题。物理安全需要面对的是环境风险及不可预知的人类活动,是一个非常关键的领域,也是安全保障的第一道防线。物理安全机制是指能够为人员、数据、器材、应用系统以及这些设备自身的安全提供有力的保障。物理安全的重要性:信息系统安全战略的一个重要组成部分物理安全面临问题:环境风险不确定性,人类活动的不可预知性典型的物理安全问题:自然灾