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

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

⭐ 思路

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

🍑 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 小时前
【华为OD】分割数组的最大差值
数据结构·算法·华为od
weixin_307779136 小时前
最小曲面问题的欧拉-拉格朗日方程 / 曲面极值问题的变分法推导
算法
RTC老炮7 小时前
webrtc弱网-AlrDetector类源码分析与算法原理
服务器·网络·算法·php·webrtc
孤廖7 小时前
【算法磨剑:用 C++ 思考的艺术・Dijkstra 实战】弱化版 vs 标准版模板,洛谷 P3371/P4779 双题精讲
java·开发语言·c++·程序人生·算法·贪心算法·启发式算法
sali-tec7 小时前
C# 基于halcon的视觉工作流-章33-矩状测量
开发语言·人工智能·算法·计算机视觉·c#
songx_997 小时前
leetcode29( 有效的括号)
java·数据结构·算法·leetcode
于樱花森上飞舞7 小时前
【java】常见排序算法详解
java·算法·排序算法
GawynKing8 小时前
图论3 图的遍历
算法·深度优先
东方芷兰9 小时前
Leetcode 刷题记录 21 —— 技巧
java·算法·leetcode·职场和发展·github·idea
kyle~9 小时前
排序---选择排序(Selection Sort)
java·算法·排序算法