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代表的是属性名

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

相关推荐
Navigator_Z14 分钟前
LeetCode //C - 1293. Shortest Path in a Grid with Obstacles Elimination
c语言·算法·leetcode
小羊没烦恼!33 分钟前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
Nil20843 分钟前
leetcode 64最小路径和
算法·leetcode·职场和发展
光影少年1 小时前
AI Agent、自动化与未来工作
人工智能·算法·架构
牧羊人.3331 小时前
计算机视觉基础 第16章|EigenFace,FisherFace,LBPH传统人脸识别算法
人工智能·算法·计算机视觉
Nil2081 小时前
leetcode 72编辑距离
算法·leetcode·职场和发展
Highcharts.js1 小时前
AI图表开发工具Highcharts Assist|自然语言生成图表代码
javascript·人工智能·highcharts·开发神器
神工坊1 小时前
技术分享︱SIMFORGE HSF® 网格加密与热点加速技术实践
算法·hpc·网格·cae·工程仿真·数值引擎·samr
志尊宝1 小时前
Vue3 零基础每日笔记(087):Vue3 高频面试题(下)
前端·javascript·vue.js·笔记·ecmascript·#vue.js
Nil2082 小时前
leetcode 136只出现一次的数字
leetcode·哈希算法·散列表