leetcode 49 Group Anagram
2024-10-07 23:04:18
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>
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> res = new ArrayList<>();
if(strs.length == 0)
return res;
HashMap<String, List<String>> map = new HashMap<>(); for(int i=0; i<strs.length; i++){
char[] tmp = strs[i].toCharArray();
Arrays.sort(tmp);
String key = String.valueOf(tmp);
if(!map.containsKey(key))
map.put(key, new ArrayList<String>());
map.get(key).add(strs[i]);
} return new ArrayList<List<String>>(map.values());
}
}
最新文章
- 利用log4j+mongodb实现分布式系统中日志统一管理
- 从零点壹开始学JAVA(DAY 1 笔记)<;补充记录>;
- python成长之路【第十四篇】:HTML初步认识
- window.showModalDialog返回值和window.open返回值实例详解
- .NET Framework中重点类型的继承关系
- 6-04使用SQL语句更新数据
- 【BZOJ2821】作诗(Poetize) 分块
- IOS开发 应用程序图标数字角标
- (转)经典SQL查询语句大全
- ASP.NET动态加载Js代码到Head标签中(三种方法)
- BZOJ 2727 双十字(树状数组)
- backbone-1.3.3源码解析-----------Event
- expunge
- C 二叉树
- linux-多线程
- .Net操作XML文件
- android特效
- git忽略特殊文件
- 游戏中实现粒子碰撞,纯java
- mysql_建立索引的优缺点