力扣 字母异位词分组 哈表 集合

👨‍🏫 力扣 字母异位词分组

⭐ 思路

由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。

🍑 AC code

java 复制代码
class Solution {
    public List<List<String>> groupAnagrams(String[] strs)
	{
		HashMap<String, List<String>> map = new HashMap<>();
		for (String s : strs)
		{
			char[] arr = s.toCharArray();//字符串转字符数组
			Arrays.sort(arr);
			String idx = String.valueOf(arr);//字符数组转字符串
			List<String> list = map.getOrDefault(idx, new ArrayList<String>());
			list.add(s);
			map.put(idx, list);

//			if (map.containsKey(idx))
//			{
//				map.get(idx).add(s);
//			} else
//			{
//				ArrayList<String> list = new ArrayList<String>();
//				list.add(s);
//				map.put(idx, list);
//			}
		}
		//将 map 中值作为 list集合的初始化值
		List<List<String>> ans = new ArrayList<>(map.values());
		return ans;
	}
}
相关推荐
劈星斩月6 分钟前
监督学习算法 之 决策树
学习·算法·决策树
学计算机的计算基10 分钟前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
tachibana215 分钟前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
To_OC8 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
旖-旎9 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
To_OC10 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
delishcomcn11 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
触底反弹11 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
雪碧聊技术11 小时前
力扣 LCR 091. 粉刷房子 —— 动态规划入门详解
算法·动态规划