LeetCode——字母异位词分组(中等)

题目

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

题解

看了解析才做出来的,不得不说解法真的很精巧

先定义一个自定义函数,把传入的字符串先用split('')拆分成字母数组,然后用sort()排序字母,然后用join('')把字母数组还原成字符串

然后遍历题目给定的数组,分别传入函数中获得新字符串,与map比较,如果map中存在新字符串则把遍历的这个字符串加进去,如果不存在则创建map的新键值对

javascript 复制代码
/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function(strs) {
    function getkey(str)
    {
        return str.split('').sort().join('');
    }
    var map = new Map();
    for(var i of strs)
    {
        var ii = getkey(i);
        if(map.get(ii))
        {
            map.get(ii).push(i);
        }
        else{
            map.set(ii,[i]);
        }
    }
    return [...map.values()];
};

知识点

在for循环中,i of strs代表的是遍历数组中的元素,i in strs的i代表的是索引值,如果是在对象中i in strs的i代表的是属性名

[...×××]代表的是,用通俗的话来说把衣服脱了,不管是大括号([])、花括号({}),统统不在话下,全部脱掉脱掉!

相关推荐
new出一个对象1 小时前
uniapp接入BMapGL百度地图
javascript·百度·uni-app
你挚爱的强哥2 小时前
✅✅✅【Vue.js】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本
javascript·vue.js·jquery
LNTON羚通3 小时前
摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现
算法·目标检测·音视频·监控·视频监控
前端Hardy3 小时前
纯HTML&CSS实现3D旋转地球
前端·javascript·css·3d·html
susu10830189113 小时前
vue3中父div设置display flex,2个子div重叠
前端·javascript·vue.js
哭泣的眼泪4084 小时前
解析粗糙度仪在工业制造及材料科学和建筑工程领域的重要性
python·算法·django·virtualenv·pygame
清炒孔心菜4 小时前
每日一题 LCR 078. 合并 K 个升序链表
leetcode
Microsoft Word5 小时前
c++基础语法
开发语言·c++·算法
天才在此5 小时前
汽车加油行驶问题-动态规划算法(已在洛谷AC)
算法·动态规划
小镇程序员6 小时前
vue2 src_Todolist全局总线事件版本
前端·javascript·vue.js