【leetcode-49】字母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:
所有输入均为小写字母。
不考虑答案输出的顺序。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/group-anagrams
这题没什么技巧,关键在于有没有想到用Map映射 ans : {String -> List}分类
排序数组分类
思路:当且仅当它们的排序字符串相等时,两个字符串是字母异位词。
我的代码:
public class Solutiontemp {
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String,ArrayList<String>> map = new HashMap<>();
for (int i=0;i<strs.length;i++) {
char[] c = strs[i].toCharArray();
Arrays.sort(c);
String key = String.valueOf(c);
// String key = c.toString(); 这个写法会输出错误,两个排列相同的char[]是不同的对象,toString后居然也是不同的对象
if (map.containsKey(key)) {
ArrayList<String> list = new ArrayList<>(map.get(key));
list.add(strs[i]);
map.put(key,list);
} else {
ArrayList<String> list = new ArrayList<>();
list.add(strs[i]);
map.put(key,list);
}
}
List<List<String>> res = new ArrayList<>();
for (String key : map.keySet()) {
System.out.println(key);
res.add(map.get(key));
}
return res;
}
public static void main(String[] args) {
String[] str = new String[]{"eat","tea","tan","ate","nat","bat"};
Solutiontemp solutiontemp
= new Solutiontemp();
System.out.println(solutiontemp.groupAnagrams(str));
}
}
同样思路参考解法很简洁:
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<>();
for (String str : strs) {
char[] tmp = str.toCharArray();
Arrays.sort(tmp);
String keyStr = String.valueOf(tmp);
if (! map.containsKey(keyStr)) map.put(keyStr,new ArrayList<String>());
map.get(keyStr).add(str);
}
return new ArrayList<>(map.values());
}
}
链接:https://leetcode-cn.com/problems/two-sum/solution/zhao-dao-wei-yi-de-
【leetcode-49】字母异位词分组的更多相关文章
- LeetCode 49: 字母异位词分组 Group Anagrams
LeetCode 49: 字母异位词分组 Group Anagrams 题目: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. Given an array o ...
- Java实现 LeetCode 49 字母异位词分组
49. 字母异位词分组 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", & ...
- Leetcode 49.字母异位词分组
字母异位词分组 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", " ...
- LeetCode 49. 字母异位词分组(Group Anagrams)
题目描述 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "ta ...
- 【LeetCode】49. 字母异位词分组
49. 字母异位词分组 知识点:字符串:哈希表 题目描述 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源 ...
- LeetCode:字母异位词分组【16】
LeetCode:字母异位词分组[16] 题目描述 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", &quo ...
- leetcode TOP100 字母异位词分组
字母异位词分组 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 思路: 一个map,将每个字符串字符进行记数,字符作为map的key,次数初始为零,以此来标识字 ...
- Leetcode题库——49.字母异位词分组【##】
@author: ZZQ @software: PyCharm @file: leetcode49_groupAnagrams.py @time: 2018/11/19 13:18 要求:给定一个字符 ...
- Leetcode题目49.字母异位词分组(中等)
题目描述: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "t ...
- leetcode刷题-49字母异位词分组
题目 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 思路 由于异位词由相同字母构成,所以可以用一个顺序的字符串作为这些字母异位词的标志,由此可以想到字典的方法 ...
随机推荐
- FileZilla_Server:425 Can't open data connection 问题解决
25 Can't open data connection 和 读取目录列表失败 问题解决 这个问题主要是由于使用Passive Mode模式造成的,解决这个问题很简单:1.在ftp服务软件中设置指定 ...
- 虚拟机配置静态ip
参考地址 https://www.cnblogs.com/maowenqiang/articles/7727910.html TYPE=EthernetBOOTPROTO="static& ...
- js 字符串 有没有 像C# @ 那种 换行也可以显示的方法 \
- OEL7.6安装Oracle Database 19C(VERSION 19.3.0.0)
1.eDelivery中下载Oracle Database 19C和Oel的安装介质,并安装好操作系统 2.安装Oracle环境准备工具 环境准备工具会自动完成用户和用户组的创建.系统参数配置.依赖包 ...
- window配合虚拟机VMware搭建虚拟ubuntu服务器入坑集锦
1.VMware虚拟机和主机进行网络连接设置 https://jingyan.baidu.com/article/adc81513b86621f723bf7383.html 2.解决linux虚拟机与 ...
- spring boot缓存excel临时文件后再操作
1. 引入poi的两个依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi ...
- ant笔记
目录 ant远程部署 ant的使用,命令! 参考文献: ant+maven一键打包springboot上传服务器发布 判断linux文件.文件夹是否存在 shell中脚本参数传递的两种方式 shell ...
- 部署ceph存储集群及块设备测试
集群环境 配置基础环境 添加ceph.repo wget -O /etc/yum.repos.d/ceph.repo https://raw.githubusercontent.com/aishang ...
- Alipay SDK验签PHP低于5.5版本错误
低于PHP5.5版本不支持OPENSSL_ALGO_SHA256函数,要想使用RSA2加密,把OPENSSL_ALGO_SHA256函数替换为:sha256WithRSAEncryption 解密方法 ...
- 使用async进行结构化并发程序开发
异步风格的函数: 继续来学习async相关的东东,对于它其实可以用到函数上,也就是用它可以定义一个异步风格的函数,然后在该函数中再来调用普通的函数,下面来瞅一下: 其实“GlobalScope.asy ...