【力扣hot100】49. 字母异位词分组

题目

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

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

示例 1:

输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]

示例 2:

输入: strs = [“”]
输出: [[“”]]

示例 3:

输入: strs = [“a”]
输出: [[“a”]]

提示:

1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] 仅包含小写字母


JS解法1:

排序
由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键,并将字母异位词保存为对应键的值,随后将对应键的值作为新对象返回。

/*** @param {string[]} strs* @return {string[][]}*/
var groupAnagrams = function(strs) {const map = new Map(); 		 //创建一个Map对象来存储分组后的结果for (let str of strs) {let array = Array.from(str);    //将字符串转换为字符数组,并对字符数组进行排序array.sort();let key = array.toString();     // 将排序后的字符数组转换为字符串作为 Map 的键let list = map.get(key) ? map.get(key) : new Array();   // 检查当前键在 Map 中是否已存在,若不存在则创建一个新数组,否则获取已有数组list.push(str);     	//将当前字符串添加到对应键的数组map.set(key, list);     //将键值对更新至Map}return Array.from(map.values());
};

在这里插入图片描述

JS解法2:

计数
由于互为字母异位词的两个字符串包含的字母相同,因此两个字符串中的相同字母出现的次数一定是相同的,故可以将每个字母出现的次数使用字符串表示,作为哈希表的键。

由于字符串只包含小写字母,因此对于每个字符串,可以使用长度为 26 的数组记录每个字母出现的次数。需要注意的是,在使用数组作为哈希表的键时,不同语言的支持程度不同,因此不同语言的实现方式也不同。

/*** @param {string[]} strs* @return {string[][]}*/
var groupAnagrams = function(strs) {const map = new Object();for (let s of strs) {const count = new Array(26).fill(0);     创建一个长度为 26 的数组,用于统计每个字符出现的次数for (let c of s) {count[c.charCodeAt() - 'a'.charCodeAt()]++;     // 将当前字符转换为 ASCII 码,并统计在 count 数组中的对应位置}map[count] ? map[count].push(s) : map[count] = [s]; // // 检查当前统计数组 count 是否已存在于 map 中,若存在则将当前字符串添加到对应的数组中,否则创建一个新数组并添加到 map 中}return Object.values(map);
};

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

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

相关文章

Visual Studio工程升级QT产生的问题及解决

文章目录 小结问题及解决QT的路径问题0xC0000139: Entry Point Not Found 参考 小结 最近将QT从版本5.3.2升级到了5.12.7&#xff0c;经及将VS2012工程升级到VS2015&#xff0c;碰到了一些问题&#xff0c;例如路径问题&#xff0c;程序无法启动的问题&#xff08;Entry Point…

k8s client-java创建pod常见问题

1.配置Kubernetes连接&#xff1a; 使用Kubernetes的配置文件&#xff08;通常位于~/.kube/config&#xff09;或直接使用API服务器地址、认证信息等来配置客户端。 配置通常有两种模式&#xff0c;安全和不安全的配置模式&#xff0c;对认证要求严格就选用安全模式&#xff…

实景剧本杀小程序儿童公园剧本杀小程序系统开发

开发实景剧本杀小程序儿童公园剧本杀系统需要考虑以下几个方面&#xff1a; 1. 游戏设计&#xff1a;设计适合儿童玩耍的剧本杀游戏&#xff0c;考虑场景、角色、任务、线索等因素&#xff0c;以适应儿童的理解力和参与度。 2. 技术实现&#xff1a;利用小程序技术框架进行系…

osgEarth学习笔记4-第一个OsgEarth QT程序

原文链接 使用QT Creator新建一个窗口项目。 编辑pro文件 QT core gui greaterThan(QT_MAJOR_VERSION, 4): QT widgets CONFIG c11 DEFINES QT_DEPRECATED_WARNINGS #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 # disables all the APIs deprecated bef…

前后端分离项目部署服务器教程--实践成功

文章目录 项目介绍流程1租界云服务2通过远程软件连接服务器3部署前后端代码停止功能文件 环境配置1.安装jdk2.安装Nginx3.安装mysql数据库 花了将近一天部署前后端的项目&#xff0c;写一个日志记录一下&#xff0c;话说孰能生巧。明天把服务器恢复初始在部署一下。 项目介绍 …

网络安全防御策略

网络安全防御策略 引言 在这个数字化的世界里&#xff0c;网络安全是每个个人和组织都需要关注的重要议题。了解如何保护自己免受网络攻击是至关重要的。 保持软件更新 重要性 防止已知漏洞被利用减少恶意软件感染的风险 操作建议 定期检查操作系统和应用程序的更新启用…

大模型-Prompt

一、prompt是什么 在大型语言模型集成中&#xff0c;"prompt" 是指您向模型提供的输入文本或指令&#xff0c;以引导模型生成特定类型的响应。这个 prompt 可以是一个问题、一段描述、一个任务说明&#xff0c;甚至是一部分对话历史记录等。通过设计和优化 prompt&a…

【已解决】在pycharm终端无法激活conda环境,但在cmd命令行中可以

一、问题描述 在windows下winr启动cmd命令行&#xff0c;可以成功运行conda命令并且激活环境在pycharm中打开Terminal终端&#xff0c;发现无法运行conda和pip命令&#xff0c;报错环境无法激活 无法在管道中间运行文档: D:\software\Anaconda3\condabin\conda.bat。 所在位置…

fedora RTL8821CE 无线网卡驱动安装

更新 fedora38 后&#xff0c;demsg 中会报大量的日志: rtw_8821ce 0000:02:00.0: unhandled firmware c2h interrupt如果遇到上面的信息&#xff0c;需要更新无线网卡驱动&#xff0c;方法参考: https://github.com/tomaspinho/rtl8821ce 1. 安装编译工具及依赖 sudo dnf i…

Matlab|基于改进粒子群算法的混合储能系统容量优化

目录 主要内容 部分程序 下载链接 主要内容 为了调高风光互补发电储能系统的经济性&#xff0c;减少其运行费用&#xff0c;研究风光互补发电储能系统的容量优化配置模型&#xff0c;探讨粒子群算法的改进及混合储能容量优化方法。首先通过对全生命周期费用静态模型…

全身动作捕捉设备Dreamscap X1,赋予影视、游戏动画全新创作体验

在影视动画、游戏动画制作领域&#xff0c;全身动作捕捉设备具有完整的动作捕捉性能捕获&#xff0c;无需关键帧动画技能&#xff0c;也可以捕捉真人全范围的运动姿态&#xff0c;通过全身动作捕捉设备系统将动作捕捉数据直接流式传输到3D模型上&#xff0c;辅助动画师制作出逼…

【DataWhale学习笔记-蝴蝶书共读】大语言模型背后

从图灵测试到ChatGPT 1950年&#xff0c;艾伦•图灵(Alan Turing)发表论文《计算机器与智能》&#xff08; Computing Machinery and Intelligence&#xff09;&#xff0c;提出并尝试回答“机器能否思考”这一关键问题。在论文中&#xff0c;图灵提出了“模仿游戏”&#xff…

超越标签的探索:K-means与DBSCAN在数据分析中的新视角

最近在苦恼为我的数据决定分组问题&#xff0c;在查找资料时&#xff0c;恰好看到机器学习中的无监督学习的聚类分析&#xff0c;正好适用于我的问题&#xff0c;但是我之前学机器学习时。正好没有学习无监督部分&#xff0c;因为我认为绝大多数问题都是有标签的监督学习&#…

部署Zabbix Agents添加使能监测服务器_Windows平台_MSI/Archive模式

Windows平台 一、从MSI安装Windows代理,添加Windows Servers/PC 概述 可以从Windows MSI安装包(32位或64位) 安装Zabbix agent 32位包不能安装在64位Windows中 所有软件包都支持TLS,配置TLS可选 支持UI和命令行的安装。 1、下载Agent代理程序,使用Agent2升级版,官网链接如…

前端安全——最新:lodash原型漏洞从发现到修复全过程

人生的精彩就在于你永远不知道惊喜和意外谁先来&#xff0c;又是一个平平无奇的早晨&#xff0c;我收到了一份意外的惊喜——前端某项目出现lodash依赖原型污染漏洞。咋一听&#xff0c;很新奇。再仔细一看&#xff0c;呕吼&#xff0c;更加好奇了~然后就是了解和修补漏洞之旅。…

Java基础-泛型

泛型 基本概念为什么我们需要泛型泛型类型泛型类简单泛型类多元泛型类 泛型接口泛型方法为什么要使用泛型方法呢?使用方法 泛型的上下限上限下限加点难度的例子例子一例子二例子三 泛型数组深入理解泛型什么是泛型擦除后保留的原始类型泛型类型擦除原则如何进行擦除的?怎么证…

鸿蒙开发中闭包的使用

闭包的使用要分成三个部分&#xff0c;闭包的声明&#xff0c;闭包的实现&#xff0c;闭包的调用 第一中写法 闭包的声名 callSurfaceId:(surfaceid: string) >void (surfaceid:string) > {}闭包的实现 VideoDetail({ screenHeight: this.videoHeight, avPlayerUtil: …

汽车超级充电桩

在2023国际数字能源展主论坛上&#xff0c;深圳官宣建设“超充之城”&#xff0c;提出到2025年&#xff0c;深圳市将建设超充站300座&#xff0c;“超充/加油”数量比在国内率先达到1:1&#xff1b;2030年&#xff0c;超充站将增至1000座&#xff0c;完成超充骨干网建设&#x…

理论学习:使用early stopping解决神经网络过拟合问题,early stopping是什么?

Early stopping 是一种用来防止神经网络过拟合的正则化技术&#xff0c;其核心思想非常直接&#xff1a;在训练过程中定期检查模型在一个或多个验证集上的性能&#xff0c;并在性能不再显著提升时停止训练。这种方法既简单又有效&#xff0c;因为它利用了一个观察&#xff1a;训…

Linux课程四课---Linux第一个小程序(进度条)

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…