力扣刷题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,一经查实,立即删除!

相关文章

【WSL】Windows11 迁移 Linux 子系统到非系统盘 (如D 盘),减少系统盘占用

1、安装 安装见官方文档进行安装,参考 https://learn.microsoft.com/zh-cn/windows/wsl/install wsl --install Ubuntu-20.04安装时,若出现 0x80370… 错误,下载下面依赖,再进行上述安装 https://wslstorestorage.blob.core.w…

虚拟化技术

前言 大家好我是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…

MSF融合流程

1. 添加重力约束 重力约束是在在车体系的方向是(0,0,1),添加时1)如果已知车辆在水平方向运动,添加平面约束;2)如果已知车辆静止(判断IMU加速度计和陀螺仪的n…

【基础】连续数的和 c++

描述 给出两个整数n和k,(2≤n≤70000,1≤k≤n),求出1,2,3,…,n中连续k个数的和,并计算出和为平方数的个数。 例如n10,k3。在1,2,…,10中,连续3个数的和有 1236 2349 34512 45615 56718 67821 78924 891027…

reflectasm java 高性能反射工具

reflectasm java 高性能反射工具 大佬文章 官网示例 maven 引入 <dependency><groupId>com.esotericsoftware</groupId><artifactId>reflectasm</artifactId><version>1.11.9</version> </dependency>实体类 public class U…

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基础重要知识&#xff08;面试题&#xff09;4.1基本数据类型4.1.1 八种基本数据类型4.1.2 基本类型和包装类型的区别4.1.3包装类型的缓存机制4.1.4自动装箱和拆箱&#xff1f;原理&#xff1f;&#xff08;1&#xff09;定义&#xff08;2&#xff09;原理 4.2…

使用 BPF 监控 Kubernetes 集群(k8s BPF 工具 kubectl-trace认知

写在前面 学习中遇到&#xff0c;整理分享&#xff0c;博文内容涉及&#xff1a;kubectl-trace 安装&#xff0c;在节点&#xff0c;容器中如何使用需要注意的问题&#xff1a;job 闪完成&#xff0c;一直 Pending 状态解决理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c…

ROS使用catkin_make编译单个功能包和所有功能包

编译功能包&#xff1a; catkin_make -DCATKIN_WHITELIST_PACKAGES"需要单独编译的包名"但是如再次使用catkin_make编译所有功能包时会出现只编译上次设置的单独功能包&#xff0c;如果想要再次使用catkin_make编译所有功能包&#xff0c;需要执行&#xff1a; cat…

c++异构计算获取计算进度

异步运行任务&#xff0c;并定期检查任务是否已完成。如果没有&#xff0c;您希望打印出任务的进度。但是&#xff0c;您提供的代码存在一些问题&#xff1a; 1。“TaskRun”类未在您提供的代码段中定义。请确保其定义正确&#xff0c;并且“run”方法是“TaskRun”的成员函数…

springboot项目讲解

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

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

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

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

动态规划章节理论基础&#xff1a; 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 题目链接&#xff1a;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 服务器&#xff0c;包括主机监控、…