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

...×××\]代表的是,用通俗的话来说把衣服脱了,不管是大括号(\[\])、花括号({}),统统不在话下,**全部脱掉脱掉!** ![](https://file.jishuzhan.net/article/1697340913518383105/5aa5c8b93a244930a7ac4a3ff0ce5136.png)

相关推荐
码路飞15 小时前
热榜全是 OpenClaw,但我用 50 行 Python 就造了个桌面 AI Agent 🤖
java·javascript
CoovallyAIHub15 小时前
181小时视频丢给GPT-5,准确率只有15%——南大联合NVIDIA等五校发布多模态终身理解数据集
深度学习·算法·计算机视觉
前端Hardy15 小时前
别再忽略 Promise 拒绝了!你的 Node.js 服务正在“静默自杀”
前端·javascript·面试
前端Hardy15 小时前
别再被setTimeout闭包坑了!90% 的人都写错过这个经典循环
前端·javascript·vue.js
CoovallyAIHub15 小时前
CVPR 2026 | GS-CLIP:3D几何先验+双流视觉融合,零样本工业缺陷检测新SOTA,四大3D工业数据集全面领先!
深度学习·算法·计算机视觉
前端Hardy15 小时前
你的 Vue 组件正在偷偷吃掉内存!5 个常见的内存泄漏陷阱与修复方案
前端·javascript·面试
xlp666hub16 小时前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
前端人类学16 小时前
深入解析JavaScript中的null与undefined:区别、用法及判断技巧
前端·javascript
有意义18 小时前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质
前端·算法·面试
进击的尘埃18 小时前
Vitest 自定义 Reporter 与覆盖率卡口:在 Monorepo 里搞增量覆盖率检测
javascript