【leetcode-49】字母异位词分组
2024-09-05 09:05:51
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["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-
最新文章
- 浅析UPnP协议
- 【Python实战】Scrapy豌豆荚应用市场爬虫
- sprintf()函数的用法
- Navicat Premium下sql导入中文乱码解决方案
- hdu1272 小希的迷宫
- zepto源码--filtered, contains,funcArg,setAttribute,className,deserializeVale--学习笔记
- HTML data属性简介以及低版本浏览器兼容算法
- 161116、springmvc自己实现防止表单重复提交(基于注解)
- 在mac上安装svn客户端
- Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档
- Spring Framework 4.1.1
- HW--漂亮度
- 安装Android Studio报failed to find java version for &#39;C:\windows\system32\java.exe&#39;:[2] The system cannot find the specified file.错误的解决方案
- eclipse配置tomcat及修改tomcat默认根目录
- 二 APPIUM Android自动化 环境搭建
- Beauty Contest 凸包+旋转卡壳法
- C# 把Div变为滚动条
- TCP协议(二)——TIME_WAIT状态
- C++ 11 左值,右值,左值引用,右值引用,std::move, std::foward
- JAVA基础知识回顾(面试资料)