Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
大家好,我是速冻鱼🐟,一条水系前端💦,喜欢花里胡哨💐,持续沙雕🌲,是隔壁寒草🌿的好兄弟,刚开始写文章。 如果喜欢我的文章,可以关注➕点赞,为我注入能量,与我一同成长吧~
题目🦀
49. 字母异位词分组
难度中等
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""]
输出: [[""]]
示例 3:
输入: strs = ["a"]
输出: [["a"]]
提示:
1 <= strs.length <= 1040 <= strs[i].length <= 100strs[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-字母异位词分组⚡️就结束了,虽然前端对算法要求没有后端高,但是算法是编程基础,程序=数据结构➕算法,所以算法这个东西没有捷径,只能多写多练,多总结,文章的目的其实很简单,就是督促自己去完成算法练习并总结和输出,菜不菜不重要,但是热爱🔥,喜欢大家能够喜欢我的短文,也希望通过文章认识更多志同道合的朋友,如果你也喜欢折腾,欢迎加我好友,一起沙雕,一起进步。
github🤖:sudongyu
个人博客👨💻:速冻鱼blog
vx👦:sudongyuer
写在最后
伙伴们,如果喜欢我的口水话给🐟🐟点一个赞👍或者关注➕都是对我最大的支持。