字母异位词分组

文章讲述了如何使用JavaScript的Map数据结构来解决两数之和问题和字母异位词分组问题。在两数之和问题中,通过遍历数组并使用Map存储已遍历过的元素及其索引,从而找到目标和的两个整数。在字母异位词分组中,通过排序字符串并用哈希表存储排序后的键值对,将相同字母异位词分组在一起。
摘要由CSDN通过智能技术生成

第一题回顾

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

利用JS解答:

var twoSum = function(nums, target) {
const myMap = new Map();
for (let i = 0; i < nums.length; i++) {
if (myMap.has(target - nums[i])) {
return [myMap.get(target - nums[i]), i];
}
myMap.set(nums[i], i);
}

};

(1)get() 方法用来获取一个 Map 对象中指定的元素。
(2)set() 方法为Map对象添加一个指定键(key)和值(value)的新元素。
(3)has() 返回一个bool值,用来表明map 中是否存在指定元素。

可能需要的知识点

一旦需要根据特征进行分类,就应该用散列表
1.Array.from() 静态方法从可迭代类数组对象创建一个新的浅拷贝的数组实例。

console.log(Array.from('foo'));
// Expected output: Array ["f", "o", "o"]

console.log(Array.from([1, 2, 3], x => x + x));
// Expected output: Array [2, 4, 6]

2.Array.toString() 方法返回一个字符串,表示指定的数组及其元素。

*const array1 = [1, 2, 'a', '1a'];
console.log(array1.toString());
// Expected output: "1,2,a,1a"*
var groupAnagrams = function(strs) {
    const map = new Map()
    for(let str of strs){
       let array = Array.from(str);
       array.sort()
       let key=array.toString();
       let list = map.get(key) || []
       list.push(str)
       map.set(key,list)
    }
    return Array.from(map.values())
};

函数groupAnagrams的目的是将一个字符串数组strs中的所有字母异位词分组,并将它们放入一个二维数组中返回。

该函数的实现方式是使用哈希表,对于每个字符串,将其排序后作为哈希表的键,将属于同一组的字符串存储在同一个键对应的数组中。

具体来说,该函数的执行步骤如下:

1 初始化一个空的哈希表map。
2 遍历数组strs,对于每个字符串str,执行以下操作:

  • 将字符串转换为字符数组,并将其排序。
  • 将排序后的字符数组转换为字符串,作为哈希表的键 key。
  • 从哈希表map中获取键key对应的值list,如果不存在,则创建一个空数组。
  • 将当前字符串str添加到数组list中。
  • 将数组list存储回哈希表map中。

3 将哈希表map中的所有值存储到一个二维数组中并返回。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值