002 --- 字母异位词分组 --- 力扣热题100

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

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

/**
 * @param {string[]} strs
 * @return {string[][]}
 */

思路:首先将 每一个字符串排序 然后相同的 创建一个map key为排序后的字符串,value为数组,为排序前的字符串合集。每次遍历,如果排序后的字符串在 map中,那么就将这个字符串添加到value的数组中,如果未找到,就创建一个新的数组,并将排序前的字符串添加进去
var groupAnagrams = function(strs) {
    // 创建一个map
    const map = new Map()
    for(let str of strs) { // 遍历strs的值
        let array = str.split('').sort().join('') 
        // 将字符串转换成字符数组,排序,再转换成字符串数组
        let key = array.toString() // 将排序后的字符串 赋值给 key
        let list = map.get(key) ? map.get(key) :new Array() 
        // 如果map里面有key这个键值对,就将这个键值对的值赋给list
        // 如果没有,就重新创建一个数组
        list.push(str)
        // 更新list数组,将str压入数组末尾
        map.set(key,list)
        // 如果多次设置相同的key,会覆盖之前的
    }
    return Array.from(map.values())
    // 用Array.from() 方法可以使map,set,字符串等转换成数组格式
    // map.values() 得到map的值 数组
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值