当前位置: 首页 > article >正文

LeetCode热题100(八)—— 438.找到字符串中所有字母异位词

LeetCode热题100(八)—— 438.找到字符串中所有字母异位词

  • 题目描述
  • 代码实现
  • 思路解析

  • 你好,我是杨十一,一名热爱健身的程序员
  • 在Coding的征程中,不断探索与成长
  • LeetCode热题100——刷题记录(不定期更新)
    此系列文章用于记录我在学习 LeetCode热题100 过程中的总结和收获
    愿与诸君共同探讨,在代码世界里携手共进,攻克难题,提升自我

题目描述

给定两个字符串 s 和 p,找到 s 中所有 p 的异位词的子串。
返回这些子串的起始索引。不考虑答案输出的顺序。
字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。
示例 1:输入: s = "cbaebabacd", p = "abc"输出: [0,6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。
示例 2:输入: s = "abab", p = "ab"输出: [0,1,2]解释:起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。
提示:1 <= s.length, p.length <= 3 * 104s 和 p 仅包含小写字母

代码实现

class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> result = new ArrayList<>();int sLen = s.length();int pLen = p.length();if (sLen < pLen)return result;int[] pArray = new int[26];int[] sArray = new int[26];for (int i = 0; i < pLen; i++) {pArray[p.charAt(i) - 'a']++;sArray[s.charAt(i) - 'a']++;}if (Arrays.equals(pArray, sArray)) {result.add(0);}for (int i = 0; i < sLen - pLen; i++) {sArray[s.charAt(i) - 'a']--;sArray[s.charAt(i + pLen) - 'a']++;if (Arrays.equals(pArray, sArray)) {result.add(i + 1);}}return result;}}

思路解析

  1. 输入:两个字符串 s ps中查找p的异位词
  2. 输出:异位词起始位置索引集合
  3. 思路:双指针 & 异位词特性
    • 双指针:左右指针定位子串起始和结束位置
    • 异位词特性:
      • 长度一致
      • 所使用的字符一致
      • 所使用的字符顺序可以不一致
      • 举例 abc acb bca bac cab cba 互为异位词
    • coding思路
      • 快速失败,若 s.length < p.length 不满足异位词第一条特性 s 的子串不能与 p 构成异位词
      • 滑动窗口:左右指针 [L,R] 间距固定位置 p.length 逐次向后遍历字符串 s
      • 异位词判定:
        • 使用数组int[26]记录子串的各个字符数量(题目描述只包含26个小写字母)
          • 遍历过程中,左右指针同步向右移动,每移动一位,数组中左指针字符数量减一,右指针字符数量加一
          • 如果字符不固定,考虑使用 Map<Character, Integer> 记录出现的字符和出现的次数
        • 判断子串字符与待判定字符串 p 的字符数量是否一致
          • 判断子串字符数量数组与 p 字符数量数组是否一致
          • 判断数组是否一致,工具类 Arrays.equals()
            在这里插入图片描述

  • 你好,我是杨十一,一名热爱健身的程序员
  • 在Coding的征程中,不断探索与成长
  • LeetCode热题100——刷题记录(不定期更新)
    此系列文章用于记录我在学习 LeetCode热题100 过程中的总结和收获
    愿与诸君共同探讨,在代码世界里携手共进,攻克难题,提升自我

相关文章:

LeetCode热题100(八)—— 438.找到字符串中所有字母异位词

LeetCode热题100&#xff08;八&#xff09;—— 438.找到字符串中所有字母异位词 题目描述代码实现思路解析 你好&#xff0c;我是杨十一&#xff0c;一名热爱健身的程序员在Coding的征程中&#xff0c;不断探索与成长LeetCode热题100——刷题记录&#xff08;不定期更新&…...

26.Word:创新产品展示说明会【9】

目录 NO1.2.3​ NO4.5.6.7 NO1.2.3 另存为/F12&#xff1a;考生文件夹点亮显示和隐藏标记选中→插入→表格→文字转化成表格→✔制表符→确定布局→自动调整→设计→随便一种保存至“表格”部件库&#xff1a;选中表格→插入→文档部件→使用“表格”部件库&#xff1a;插入→…...

python 之 zip 和 * 解包操作

文章目录 1. zip 函数语法&#xff1a;示例&#xff1a;特点&#xff1a;应用场景&#xff1a; 2. * 操作符语法&#xff1a;示例&#xff1a;应用场景&#xff1a; 3. zip 和 * 的结合使用示例&#xff1a;转置二维列表 4. zip 和 * 的其他用法示例 1&#xff1a;合并多个列表…...

反向代理模块jmh

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0c;将从服务器上得到的结果返回给客户端&#xff0c;此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说&#xff0c;反向代理就相当…...

AI应用部署——streamlit

如何把项目部署到一个具有公网ip地址的服务器上&#xff0c;让他人看到&#xff1f; 可以利用 streamlit 的社区云免费部署 1、生成requirements.txt文件 终端输入pip freeze > requirements.txt即可 requirements.txt里既包括自己安装过的库&#xff0c;也包括这些库的…...

文明的基因:在传承中破茧重生

敦煌莫高窟的壁画历经千年风雨&#xff0c;至今仍在向世界讲述着东方美学的密码。那些斑驳的壁画上&#xff0c;既有北魏时期的天竺梵音&#xff0c;也留存着盛唐气象的长安余韵。文明的基因从未停止生长&#xff0c;就像莫高窟的壁画师们在临摹前朝壁画时&#xff0c;总会在衣…...

全国31省空间权重矩阵(地理相邻空间、公路铁路地理距离空间、经济空间)权重矩阵数据-社科数据

中国31个省份空间权重矩阵-社科数据https://download.csdn.net/download/paofuluolijiang/90028597 https://download.csdn.net/download/paofuluolijiang/90028597 空间权重矩阵是反映个体在空间中依赖关系的矩阵&#xff0c;本数据计算全国31个省三种标准化处理的空间权重矩…...

MySQL数据类型转换应注意什么?

文章目录 1. **隐式转换**2. **显式转换**3. **数据截断**4. **字符集与排序规则**5. **日期和时间转换**6. **数值转换**7. **NULL 处理**8. **性能影响**9. **错误处理**10. **函数选择**示例总结 在 MySQL 中进行数据类型转换时&#xff0c;需要注意以下几个关键点&#xff…...

前端开发之jsencrypt加密解密的使用方法和使用示例

目录 RSA密钥生成选项简介 jsencrypt 使用教程 一、安装 jsencrypt 二、使用 jsencrypt 进行加密和解密 1. 创建密钥对 2. 加密数据 3. 解密数据 三、实际应用示例 加密数据并存储到 localStorage 中&#xff1a; 从 localStorage 中读取加密数据并解密&#xff1a; …...

ESP32和STM32在处理中断方面的区别

为了通俗地讲解ESP32和STM32在处理中断方面的区别&#xff0c;我们可以把它们想象成两个不同的“智能管家”系统&#xff0c;各自负责管理一个家庭&#xff08;即嵌入式项目&#xff09;的各种任务。我们将重点放在如何处理突发事件&#xff08;即中断&#xff09;上。 ESP32 …...

98.1 AI量化开发:长文本AI金融智能体(Qwen-Long)对金融研报大批量处理与智能分析的实战应用

目录 0. 承前1. 简介1.1 通义千问(Qwen-Long)的长文本处理能力 2. 基础功能实现2.1 文件上传2.2 单文件分析2.3 多文件分析 3. 汇总代码&运行3.1 封装的工具函数3.2 主要功能特点3.3 使用示例3.4 首次运行3.5 运行结果展示 4. 注意事项4.1 文件要求4.2 错误处理机制4.3 最佳…...

PPT演示设置:插入音频同步切换播放时长计算

PPT中插入音频&同步切换&放时长计算 一、 插入音频及音频设置二、设置页面切换和音频同步三、播放时长计算 一、 插入音频及音频设置 1.插入音频&#xff1a;点击菜单栏插入-音频-选择PC上的音频&#xff08;已存在的音频&#xff09;或者录制音频&#xff08;现场录制…...

链表的简单介绍

申明&#xff1a; 我们的链表可以写在类中或者接口中&#xff08;接口中更好&#xff09;&#xff0c;这里我们是写在类当中。 1.节点的构造是由当前数据和指向下一个结点的地址组成&#xff0c;那么我们在当前这个链表的类中需要实现一个节点那么此时就需要用到内部类(当一个…...

Cocoa和Cocoa Touch是什么语言写成的?什么是Cocoa?编程语言中什么是框架?为什么苹果公司Cocoa类库有不少NS前缀?Swift编程语言?

Cocoa和Cocoa Touch是什么语言写成的? 二者主要都是用Objective-C语言编写而成的。 什么是Cocoa? Cocoa是苹果操作系统macOS和iOS上的应用程序开发框架集合&#xff0c;核心语言是Objective-C编程语言&#xff0c;在移动平台被称为Cocoa Touch&#xff0c;Cocoa包含多个子框架…...

AI-System 学习

《AI系统原理与架构》ZOMI https://github.com/chenzomi12/AISystem CPU、GPU、NPU 芯片基础 华为 Ascend 产品 NVLink的发展 & 结构 NVLink 拓扑、DGX 硬件渲染图...

基于聚类与相关性分析对马来西亚房价数据进行分析

碎碎念&#xff1a;由于最近太忙了&#xff0c;更新的比较慢&#xff0c;提前祝大家新春快乐&#xff0c;万事如意&#xff01;本数据集的下载地址&#xff0c;读者可以自行下载。 1.项目背景 本项目旨在对马来西亚房地产市场进行初步的数据分析&#xff0c;探索各州的房产市…...

ARM嵌入式学习--第十一天(中断处理 , ADC)

--中断的概念 中断是指计算机运行过程中&#xff0c;出现某些意外情况需主机干预时&#xff0c;机器能自动停止正在运行的程序并转入处理新情况的程序&#xff0c;处理完毕后又返回被暂停的程序继续运行 --CPU处理事情的方式 -轮询方式 不断查询是否有事情需要处理&#xff0c…...

消息队列篇--通信协议篇--网络通信模型(OSI7层参考模型,TCP/IP分层模型)

一、OSI参考模型&#xff08;Open Systems Interconnection Model&#xff09; OSI参考模型是一个用于描述和标准化网络通信功能的七层框架。它由国际标准化组织&#xff08;ISO&#xff09;提出&#xff0c;旨在为不同的网络设备和协议提供一个通用的语言和结构&#xff0c;以…...

“新月之智”智能战术头盔系统(CITHS)

新月人物传记&#xff1a;人物传记之新月篇-CSDN博客 相关文章链接&#xff08;更新&#xff09;&#xff1a; 星际战争模拟系统&#xff1a;新月的编程之道-CSDN博客 新月智能护甲系统CMIA--未来战场的守护者-CSDN博客 目录 一、引言 二、智能头盔控制系统概述 三、系统架…...

Go Fx 框架使用指南:深入理解 Provide 和 Invoke 的区别

1. 什么是 Fx 框架&#xff1f; Fx 是一个基于 Go 语言的依赖注入框架&#xff0c;专注于简化应用程序的生命周期管理和依赖的构建。在复杂的应用程序中&#xff0c;Fx 通过模块化的设计方式将组件连接起来&#xff0c;使开发者能够更高效地管理依赖关系。 Fx 的核心理念是&a…...

实验七 JSP内置对象II

实验七 JSP内置对象II 目的&#xff1a; 1、掌握JSP内置对象的使用。 2、理解JSP的作用域 3、掌握session&#xff0c;application对象的使用 实验要求&#xff1a; 1、完成实验题目 2、要求提交实验报告&#xff0c;将代码和实验结果页面截图放入报告中 实验过程&#xff1a…...

OpenCV:Harris、Shi-Tomasi角点检测

简述 在计算机视觉和图像处理领域&#xff0c;角点是一种重要的特征点&#xff0c;通常是图像中梯度变化剧烈的区域&#xff0c;例如建筑物的拐角、棋盘的交点等。角点检测广泛应用于目标跟踪、运动检测、拼接全景图 等任务。 本文将介绍 Harris 角点检测 和 Shi-Tomasi 角点…...

RK3568 opencv播放视频

文章目录 一、opencv相关视频播放类1. cv::VideoCapture 类主要构造方法&#xff1a;主要方法&#xff1a; 2. 视频播放基本流程代码示例&#xff1a; 3. 获取和设置视频属性4. 结合 FFmpeg 使用5. OpenCV 视频播放的局限性6. 结合 Qt 实现更高级的视频播放总结 二、QT中的代码…...

白话DeepSeek-R1论文(一)|AI的顿悟时刻:DeepSeek-R1-Zero 纯强化学习解锁推理新境界

最近有不少朋友来询问Deepseek的技术核心&#xff0c;今天开始陆续针对DeepSeek-R1论文中的核心内容进行解读&#xff0c;并且用大家都能听懂的方式来解读。 AI的顿悟时刻&#xff1a;DeepSeek-R1-Zero 纯强化学习解锁推理新境界 你有没有想过&#xff0c;人工智能是如何学会…...

青少年编程与数学 02-008 Pyhon语言编程基础 10课题、列表与循环语句

青少年编程与数学 02-008 Pyhon语言编程基础 10课题、列表与循环语句 一、列表二、定义与使用定义列表访问列表元素访问列表的切片修改列表元素列表的其他操作 三、运算1. 列表连接&#xff08;Concatenation&#xff09;2. 列表复制&#xff08;Copying&#xff09;3. 列表重复…...

caddy2配置http_basic用于验证用户名密码才允许访问页面

参考&#xff1a; basicauth (Caddyfile指令) — Caddy v2中文文档 1&#xff0c;查看caddy是否已经包含了Basic Auth插件 命令&#xff1a;caddy list-modules | grep http_basic 如果显示&#xff1a; http.authentication.providers.http_basic 则代表包含 Basic Auth 模…...

FOC核心原理的C语言实现

概述 应用FOC算法&#xff0c;比如无人机、电动汽车或工业电机控制。因此&#xff0c;除了理论&#xff0c;还需要提供实用的实现步骤、常见问题及解决方案&#xff0c;比如如何获取电机的位置信息&#xff08;编码器或传感器&#xff09;&#xff0c;如何处理电流采样&#x…...

利用Manim库结合`matplotlib`、`numpy`和`scipy`来制作工作流程动画

以下是一个利用Manim库结合matplotlib、numpy和scipy来制作工作流程动画&#xff0c;展示流场速度分布计算模型&#xff0c;以及三流喷嘴的速度场和主要参数分布的可视化图形与动画的示例代码。这个示例将模拟一个简化的三流喷嘴速度场&#xff0c;通过计算速度分布并将其可视化…...

零代码搭建个人博客—Zblog结合内网穿透发布公网

目录 一、准备工作二、Z-blog 网站搭建1. XAMPP 环境设置2. Z-blog 安装3. Z-blog 网页测试 三、内网穿透工具 Cpolar 的安装和配置1. Cpolar 安装2. Cpolar 云端设置3. Cpolar 本地设置 四、本地网页发布五、注意六、本次经历总结 大家好&#xff0c;我是学问小小谢。 最近心血…...

宏_wps_宏修改word中所有excel表格的格式_设置字体对齐格式_删除空行等

需求&#xff1a; 将word中所有excel表格的格式进行统一化&#xff0c;修改其中的数字类型为“宋体&#xff0c; 五号&#xff0c;右对齐&#xff0c; 不加粗&#xff0c;不倾斜”&#xff0c;其中的中文为“宋体&#xff0c; 五号&#xff0c; 不加粗&#xff0c;不倾斜” 数…...