题目🦀
49. 字母异位词分组
难度中等
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""] 输出: [[""]]
示例 3:
输入: strs = ["a"] 输出: [["a"]]
提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i]
仅包含小写字母
解题思路🌵
- 用map来保存字母异位的key
- map的value来保存属于同一个字母异位的数组
解题步骤🌟
- 定义map存储
- 字符串转数组->排序->转字符串为key(将所有异位词排序为同一单词,作为key)
- 根据key插入map
- 将map转换为数组并输出
源码🔥
/** * @param {string[]} strs * @return {string[][]} */ var groupAnagrams = function(strs) { const map =new Map() strs.forEach((str)=>{ const key = str.split("").sort().join(""); map.has(key)?map.get(key).push(str):map.set(key,[str]); }) return Array.from(map.values()) }
时间复杂度:O(N)
空间复杂度:O(N)
结束语🌞
那么鱼鱼的LeetCode算法篇的「leetCode」49-字母异位词分组⚡️
就结束了,虽然前端对算法要求没有后端高,但是算法是编程基础,程序=数据结构➕算法
,所以算法这个东西没有捷径,只能多写多练,多总结,文章的目的其实很简单,就是督促自己去完成算法练习并总结和输出,菜不菜不重要,但是热爱🔥,喜欢大家能够喜欢我的短文,也希望通过文章认识更多志同道合的朋友,如果你也喜欢折腾
,欢迎加我好友
,一起沙雕
,一起进步
。