网站建设找单,网站深圳优化建设,嘉兴关键词优化服务,住房城乡建设部官方网站目录
1#xff0c;题目
2#xff0c;代码
2.1利用数组排序作为键名 2.2计数实现
3#xff0c;学习与总结 1#xff0c;题目
给你一个字符串数组#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到…目录
1题目
2代码
2.1利用数组排序作为键名 2.2计数实现
3学习与总结 1题目
给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 2代码
2.1利用数组排序作为键名
/*** param {string[]} strs* return {string[][]}*/
var groupAnagrams function(strs) {const map new Map();for(let str of strs){// 将字符串转换为数组let array Array.from(str);// 利用数组排序array.sort();// 将排序后的数组转变为字符串const key array.toString();let list map.get(key)?map.get(key):new Array();list.push(str);// 字母异位词所用的单词为键名 字母异位字符串数组作为键值map.set(key,list);}return Array.from(map.values())
}; 将数组转换为字符串可以使用 toString() 方法或 join() 方法。 toString() 用法: 直接调用不接受任何参数。行为: 将数组中的元素转换为字符串并用逗号,分隔各元素。示例: [apple, banana, cherry].toString() 会返回 apple,banana,cherry。特点: 简单直接不需要指定分隔符。不提供自定义分隔符的选项只能使用默认的逗号分隔符。 join() 用法: 调用时可以指定一个字符串作为分隔符。行为: 将数组中的所有元素转换为字符串并使用指定的分隔符连接起来。如果没有指定分隔符则默认使用逗号,。示例: [apple, banana, cherry].join() 会返回 apple,banana,cherry与 toString() 相同。[apple, banana, cherry].join( - ) 会返回 apple - banana - cherry这里使用了 - 作为分隔符。特点: 提供了更灵活的选项可以自定义分隔符。如果数组中某些元素是 undefined 或 null这些值会被转换为空字符串。 将字符串转换为数组的常见方法包括 Array.from() 和 string.split() Array.from() 直接表示从一个可迭代对象在这个例子中是字符串创建一个新数组。它的意图非常直观——创建一个数组的副本。str.split() 通过将字符串分割成单独的字符来创建数组。虽然这里的分隔符是空字符串意味着按每个字符分割但其初衷是用于分割字符串而非单纯地转换数据类型。 2.2计数实现
/*** param {string[]} strs* return {string[][]}*/
var groupAnagrams function(strs) {const map new Object();for(let str of strs){// 根据该题目题意 仅包含小写字母const count new Array(26).fill(0);for(let c of str){count[c.charCodeAt() - a.charCodeAt()];}map[count] ? map[count].push(str) : map[count] [str];}return Object.values(map);
};
strs [eat, tea, tan, ate, nat, bat]则 map的结构如下
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0: [eat, tea, ate],1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0: [tan, nat],1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0: [bat]
}3学习与总结
排序数组 练习对Map数据结构相关方法的使用