力扣刷题Days22-49.字母异位词(js)

目录

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",这里使用了 ' - ' 作为分隔符。
  • 特点:
    • 提供了更灵活的选项,可以自定义分隔符。
    • 如果数组中某些元素是 undefinednull,这些值会被转换为空字符串。

将字符串转换为数组的常见方法包括 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数据结构相关方法的使用;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟化技术

前言 大家好我是jiantaoyab,这是我所总结作为学习的笔记第十八篇,在这里分享给大家,这篇文章讲虚拟技术就是大家平时用到的云服务器是什么。 虚拟机技术变迁 虚拟机(Virtual Machine)技术,其实就是指在现…

关于Oracle Primavera P6 v23.12新增的特殊功能

​​​​​​​ 本文将介绍Oracle Primavera P6 最新发行版v23.12 中有新增哪些特色功能 1.角色限制计算的细化 如果选择显示根据主要资源限制计算的角色限制,你可以选择在“用户首选项”的“资源分析”选项卡上仅使用 P6 Professional 中的活动资源来计算限制。…

Spring-Gateway服务网关

一、网关介绍 1. 为什么需要网关 Gateway网关是我们服务的守门神,所有微服务的统一入口。 网关的核心功能特性: 请求路由 权限控制 限流 架构图: 权限控制:网关作为微服务入口,需要校验用户是是否有请求资格&am…

高端嵌入式底层技术揭秘:《ARM汇编与逆向工程》

ARM架构简介 与传统的CISC(Complex Instruction Set Computer,复杂指令集计算机)架构相比,Arm架构的指令集更加简洁明了,指令执行效率更高,能够在更低的功耗下完成同样的计算任务,因此在低功耗…

el-dialog弹框遮罩层问题

先看一下出现的bug,点击按钮出现弹框的时候,遮罩层出现在弹框上层,不知道是那个同事写的全局样式影响的,这个时候我们需要在el-dialog标签上添加一个属性就行 :modal-append-to-body“false” 下图是出现的问题,遮罩层…

[论文笔记] Dual-Channel Span for Aspect Sentiment Triplet Extraction

一种利用句法依赖和词性相关性信息来过滤噪声(无关跨度)的基于span方法。 会议EMNLP 2023作者Pan Li, Ping Li, Kai Zhang团队Southwest Petroleum University论文地址https://aclanthology.org/2023.emnlp-main.17/代码地址https://github.com/bert-ply…

MySQL数据自动同步到Es

Logstash 测试数据准备 DROP DATABASE IF EXISTS es;CREATE DATABASE es DEFAULT CHARACTER SET utf8;USE es;CREATE TABLE book (id INT NOT NULL,title VARCHAR(20),author VARCHAR(20),price DECIMAL(6,2),PRIMARY KEY(id) );DROP PROCEDURE IF EXISTS batchInsertBook;DELI…

【Java基础知识总结 | 第四篇】Java基础重要知识(面试题)

文章目录 4.Java基础重要知识(面试题)4.1基本数据类型4.1.1 八种基本数据类型4.1.2 基本类型和包装类型的区别4.1.3包装类型的缓存机制4.1.4自动装箱和拆箱?原理?(1)定义(2)原理 4.2…

springboot项目讲解

技术栈 vue(前端) springboot(后端主框架) mybatis(ORM,用于后端和数据库的映射,即java对象转换成表) mysql (关系型数据库) 顶层结构 .idea: idea缓存文件(不需要管) src:代码核心文件夹 —main&#xf…

【PINet车道线检测】代码复现过程

《Key Points Estimation and Point Instance Segmentation Approach for Lane Detection》 论文:https://arxiv.org/abs/2002.06604 代码:GitHub - koyeongmin/PINet 论文解读:http://t.csdnimg.cn/AOV91 这是篇关于自动驾驶中车道检测技…

代码随想录算法训练营第50天 | 123.买卖股票的最佳时机III ,188.买卖股票的最佳时机IV

动态规划章节理论基础: https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 123.买卖股票的最佳时机III 题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/ 思…

如何本地部署1Panel面板

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、…

PTA一笔画

作者 张志梅 单位 青岛大学 小丁最近迷恋上一个游戏,传说中的“一笔画”游戏。 那么什么是一笔画?如下图,顾名思义就是一笔可以完成的图。一笔画最基本的要求是在画图的过程中,笔不能离开纸,且笔所画过的线不能重复…

Springboot和Spring Cloud版本对应

Spring在不断地升级,各个版本存在一些不兼容的地方,为了避免出现问题,最好注意使用正确的版本。 官网的对应关系:https://start.spring.io/actuator/info 如下图: 下面附一下创建项目的工具: Spring官方…

代码随想录算法训练营第53天 | 1143.最长公共子序列 ,1035.不相交的线 ,53. 最大子序和

动态规划章节理论基础: https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 1143.最长公共子序列 题目链接:https://leetcode.cn/problems/longest-common-subsequence/description/ 思路&…

13|连接数据库:通过链和代理查询鲜花信息

新的数据库查询范式 提出问题:用户用自然语言提出一个问题,例如“去年的总销售额是多少?”。LLM 理解并转译:LLM 首先会解析这个问题,理解其背后的意图和所需的信息。接着,模型会根据解析的内容&#xff0c…

2024年零基础转行软件测试真的可以吗?“我“该如何做?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 零基础的学生&…

博图西门子HMI下载报错—缺少面板映像,下载失败解决办法

一、报错展示 二、解决过程 1、第一种: 在安装博图(V17)时,需要下载各类软件,这时钩选全部能够选择的软件。然后进行下载。但是在这里我遇到了下载软件时,无法选择红框中的文件。那么就需要单独去西门子官网下载。 2、第二种&am…

MQ之Spring AMQP学习

Spring AMQP学习 Spring AMQP AMQP是Advanced Message Queuing Protocol的缩写。AMQP是用于在应用程序之间传递消息的开放标准,该协议与语言和平台无关,更符合微服务中独立性的要求。 Spring AMQP是基于AMQP协议定义的一套API规范,提供了模…

微信小程序接口请求出错:request:fail url not in domain list:xxxxx

一、微信小程序后台和开发者工具配的不一样导致了这个错误 先说结论: 开发者工具配置了https://www.xxx.cn/prod-api/ 微信后台配置了 https://www.xxx.cn 一、最开始 开发者工具配置了https://www.xxx.cn:7500 微信后台配置了 https://www.xxx.cn 报错:reques…