【Leetcode刷题随笔】242.有效的字母异位词

1. 题目描述

给定两个仅包含小写字母的字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。

字母异位词定义:两个字符串包含的字母种类和数量完全相同,但顺序可以不同(例如 “listen” 和 “silent”)。

原题链接:[242]

2. 解题思路

使用哈希表的方式实现。
哈希表底层可以用一个数组实现,将两个字符串的字符映射到哈希表的每个索引中,然后依次对比两个哈希表内的元素是否一致即可。

关键在于如何构建哈希函数。

根据题目,两个字符串都只包含小写字母,最多26个小写字母,所以构建哈希表的大小为26即可,字母a放到索引0,字母z放到索引25,依次填入。
而如何将字母放到对应的索引中? 根据代码原理,字符本质上是基于 ASCII 码值的整数,a到z对应是连续的ASCII 码值,所以 ‘a’ - ‘a’是0,‘b’ - ‘a’是1,以此类推可以得到a的索引是0,b的索引是1,c的索引是2…这样就可以将字符串内的字符按规则填入哈希表的对应索引中进行比较。

3. C语言实现

3.1 双哈希表

bool isAnagram(char* s, char* t) {int lens = strlen(s), lent = strlen(t);if(lens != lent)return false;int map1[26] = {0} , map2[26] = {0};for(int i = 0; i < lens; i++){map1[s[i] - 'a'] += 1;map2[t[i] - 'a'] += 1;}for(int i = 0; i < 26; i++){if(map1[i] != map2[i]){return false;}}return true;
}
  • 首先判断两个数组的长度是否相等,长度不相等肯定不是字母异位词。
  • 定义两个哈希表map1和map2,长度设置为26,初始化全为0。
  • for循环遍历两个字符串s和t,s[i] - 'a’即表示字符串s中第i个位置的字符该对应于哈希表map1的第几个索引位置,得到索引之后在map1的相应索引处加1,代表该处有一个元素。
  • map2同理。
  • for循环遍历map1和map2的26个索引,检查两个哈希表是否一致,不一致则返回false表示两个字符串不是有效的字母异位词。

3.2 单哈希表

上面是用两个哈希表对应两个字符串,遍历到字符时在对应的哈希表内加1计数;可以优化一下,使用全为0的单哈希表,遍历s时在哈希表对应索引增加计数,遍历t时在哈希表对应索引减少技术,最后检查哈希表是不是全为0,如果有的索引还有计数,则说明两个字符串含有数量不一样的字符,不是有效的字母异位词,很好理解。

bool isAnagram(char* s, char* t){int lens = strlen(s);int lent = strlen(t);if(lent != lens)return false;int map[26] = {0};for(int i = 0; i < lens; i++){map[s[i] - 'a'] += 1;}for(int i = 0; i < lens; i++){map[t[i] - 'a'] -= 1;}for(int i = 0; i < 26; i++){if(map[i] != 0)return false;}return true;
}

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

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

相关文章

示例:spring xml+注解混合配置

以下是一个 Spring XML 注解的混合配置示例&#xff0c;结合了 XML 的基础设施配置&#xff08;如数据源、事务管理器&#xff09;和注解的便捷性&#xff08;如依赖注入、事务声明&#xff09;。所有业务层代码通过注解简化&#xff0c;但核心配置仍通过 XML 管理。 1. 项目结…

Crawl4AI:打破数据孤岛,开启大语言模型的实时智能新时代

当大语言模型遇见数据饥渴症 在人工智能的竞技场上&#xff0c;大语言模型&#xff08;LLMs&#xff09;正以惊人的速度进化&#xff0c;但其认知能力的跃升始终面临一个根本性挑战——如何持续获取新鲜、结构化、高相关性的数据。传统数据供给方式如同输血式营养支持&#xff…

【机器学习-周总结】-第4周

以下是本周学习内容的整理总结&#xff0c;从技术学习、实战应用到科研辅助技能三个方面归纳&#xff1a; 文章目录 &#x1f4d8; 一、技术学习模块&#xff1a;TCN 基础知识与结构理解&#x1f539; 博客1&#xff1a;【时序预测05】– TCN&#xff08;Temporal Convolutiona…

Mysql--基础知识点--79.1--双主架构如何避免回环复制

1 避免回环过程 在MySQL双主架构中&#xff0c;GTID&#xff08;全局事务标识符&#xff09;通过以下流程避免数据回环&#xff1a; 1 事务提交与GTID生成 在Master1节点&#xff0c;事务提交时生成一个全局唯一的GTID&#xff08;如3E11FA47-71CA-11E1-9E33-C80AA9429562:2…

安宝特科技 | AR眼镜在安保与安防领域的创新应用及前景

随着科技的不断进步&#xff0c;增强现实&#xff08;AR&#xff09;技术逐渐在多个领域展现出其独特的优势&#xff0c;尤其是在安保和安防方面。AR眼镜凭借其先进的功能&#xff0c;在机场、车站、海关、港口、工厂、园区、消防局和警察局等行业中为安保人员提供了更为高效、…

Linux第十讲:进程间通信IPC

Linux第十讲&#xff1a;进程间通信IPC 1.进程间通信介绍1.1什么是进程间通信1.2为什么要进程间通信1.3怎么进行进程间通信 2.管道2.1理解管道2.2匿名管道的实现代码2.3管道的五种特性2.3.1匿名管道&#xff0c;只能用来进行具有血缘关系的进程进行通信(通常是父子)2.3.2管道文…

微信小程序通过mqtt控制esp32

目录 1.注册巴法云 2.设备连接mqtt 3.微信小程序 备注 本文esp32用的是MicroPython固件&#xff0c;MQTT服务用的是巴法云。 本文参考巴法云官方教程&#xff1a;https://bemfa.blog.csdn.net/article/details/115282152 1.注册巴法云 注册登陆并新建一个topic&#xff…

SQLMesh隔离系统深度实践指南:动态模式映射与跨环境计算复用

在数据安全与开发效率的双重压力下&#xff0c;SQLMesh通过动态模式映射、跨环境计算复用和元数据隔离机制三大核心技术&#xff0c;完美解决了生产与非生产环境的数据壁垒问题。本文提供从环境配置到生产部署的完整实施框架&#xff0c;助您构建安全、高效、可扩展的数据工程体…

Spring Data详解:简化数据访问层的开发实践

1. 什么是Spring Data&#xff1f; Spring Data 是Spring生态中用于简化数据访问层&#xff08;DAO&#xff09;开发的核心模块&#xff0c;其目标是提供统一的编程模型&#xff0c;支持关系型数据库&#xff08;如MySQL&#xff09;、NoSQL&#xff08;如MongoDB&#xff09;…

15 nginx 中默认的 proxy_buffering 导致基于 http 的流式响应存在 buffer, 以 4kb 一批次返回

前言 这也是最近碰到的一个问题 直连 流式 http 服务, 发现 流式响应正常, 0.1 秒接收到一个响应 但是 经过 nginx 代理一层之后, 就发现了 类似于缓冲的效果, 1秒接收到 10个响应 最终 调试 发现是 nginx 的 proxy_buffering 配置引起的 然后 更新 proxy_buffering 为…

源超长视频生成模型:FramePack

FramePack 是一种下一帧&#xff08;下一帧部分&#xff09;预测神经网络结构&#xff0c;可以逐步生成视频。 FramePack 将输入上下文压缩为固定长度&#xff0c;使得生成工作量与视频长度无关。即使在笔记本电脑的 GPU 上&#xff0c;FramePack 也能处理大量帧&#xff0c;甚…

第6次课 贪心算法 A

向日葵朝着太阳转动&#xff0c;时刻追求自身成长的最大可能。 贪心策略在一轮轮的简单选择中&#xff0c;逐步导向最佳答案。 课堂学习 引入 贪心算法&#xff08;英语&#xff1a;greedy algorithm&#xff09;&#xff0c;是用计算机来模拟一个「贪心」的人做出决策的过程…

Windows使用SonarQube时启动脚本自动关闭

一、解决的问题 Windows使用SonarQube时启动脚本自动关闭&#xff0c;并发生报错&#xff1a; ERROR: Elasticsearch did not exit normally - check the logs at E:\Inori_Code\Year3\SE\sonarqube-25.2.0.102705\sonarqube-25.2.0.102705\logs\sonarqube.log ERROR: Elastic…

人机共跑,马拉松人型机器人同跑

马拉松比赛对人形机器人来说&#xff0c;是一场对硬件极限的测试&#xff0c;涉及机械、传感器、能源管理等多个方面。用户问的是硬件方面的考察和改进&#xff0c;这意味着我的回答需要聚焦于硬件性能&#xff0c;而不是算法或软件的优化。 对人形机器人硬件的考研 机械结构与…

Ubuntu Linux 中文输入法默认使用英文标点

先ubuntu从wayland切换到x11, sudo nano /etc/gdm3/custom.conf WaylandEnablefalse #取消注释 sudo systemctl restart gdm3 #使设置生效然后安装fcitx(是fcitx4版本)和 fcitx-googlepinyin, sudo apt install fcitx fcitx-googlepinyin 再sudo dpkg -i 安装百度输入法deb…

[论文阅读]ConfusedPilot: Confused Deputy Risks in RAG-based LLMs

ConfusedPilot: Confused Deputy Risks in RAG-based LLMs [2408.04870] ConfusedPilot: Confused Deputy Risks in RAG-based LLMs DEFCON AI Village 2024 文章是针对Copilot这样一个RAG服务提供平台的攻击 在企业环境中整合人工智能工具&#xff08;如 RAG&#xff09;会…

前端做模糊查询(含AI版)

文章目录 前言代码实现AI个人 总结 前言 因为table需要编辑&#xff0c;所以如果从后端拿数据&#xff0c;编辑后筛选数据就会丢失。这时候就需要前端一次性拿到所有数据进行过滤&#xff0c;数据进行浅拷贝&#xff0c;以便过滤后的数据修改之后&#xff0c;同步修改总数居&a…

Mujoco xml < sensor>

< sensor> jointposjointveljointactuatorfrcframequatgyroaccelerometerframeposframelinveltouchobjtype"site" objname"imu" 和site"imu"的区别python中与sensor有关的写法传感器名字索引第几个idid索引传感器名字传感器数量sensor中的…

Python爬虫从入门到实战详细版教程

Python爬虫从入门到实战详细版教程 文章目录 Python爬虫从入门到实战详细版教程书籍大纲与内容概览第一部分:爬虫基础与核心技术1. 第1章:[爬虫概述](https://blog.csdn.net/qq_37360300/article/details/147431708?spm=1001.2014.3001.5501)2. 第2章:HTTP协议与Requests库…

ubuntu--汉字、中文输入

两种输入框架的安装 ibus 链接 (这种方式安装的中文输入法不是很智能&#xff0c;不好用)。 Fcitx 链接这种输入法要好用些。 简体中文检查 fcitx下载和配置 注意&#xff1a;第一次打开fcitx-config-qt或者fcitx configuration可能没有“简体中文”&#xff0c;需要把勾…