《算法通关村——滑动窗口高频问题之**寻找子串异位词**》

《算法通关村——滑动窗口高频问题之寻找子串异位词

567. 字符串的排列

给你两个字符串 s1s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false

换句话说,s1 的排列之一是 s2子串

示例 1:

输入:s1 = "ab" s2 = "eidbaooo"
输出:true
解释:s2 包含 s1 的排列之一 ("ba").

示例 2:

输入:s1= "ab" s2 = "eidboaoo"
输出:false

提示:

  • 1 <= s1.length, s2.length <= 104
  • s1s2 仅包含小写字母
class Solution {public boolean checkInclusion(String s1, String s2) {int sLen1 = s1.length() , sLen2 = s2.length();if(sLen1 > sLen2){return false;}int[] charArray1 = new int[26];int[] charArray2 = new int[26];//先读最前面的一段来判断for(int i = 0 ; i < sLen1 ; ++i){++charArray1[s1.charAt(i) - 'a'];++charArray2[s2.charAt(i) - 'a'];}if( Arrays.equals(charArray1,charArray2)){return true;}for(int right = sLen1 ; right < sLen2 ; ++right){charArray2[s2.charAt(right) - 'a']++;int left = right - sLen1;charArray2[s2.charAt(left) - 'a']--;if(Arrays.equals(charArray1,charArray2)){return true;}}return false;}
}

438. 找到字符串中所有字母异位词

给定两个字符串 sp,找到 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 * 104
  • sp 仅包含小写字母
class Solution {public List<Integer> findAnagrams(String s, String p) {int sLen = s.length(), pLen = p.length();if(sLen < pLen){return new ArrayList<Integer>();}List<Integer> ans = new ArrayList<>();int[] sCount = new int[26];int[] pCount = new int[26];for(int i = 0;i<pLen;i++){sCount[s.charAt(i) - 'a']++;pCount[p.charAt(i) - 'a']++;}if(Arrays.equals(sCount,pCount)){ans.add(0);}for(int left = 0 ;left < sLen -pLen;left++){sCount[s.charAt(left) - 'a']--;int right = left + pLen;sCount[s.charAt(right) - 'a']++;if(Arrays.equals(sCount,pCount)){ans.add(left+1);}}return ans;
}}

也可以点击链接:我正在「编程导航」和朋友们讨论有趣的话题,你⼀起来吧?

也可以加我QQ(2837468248)咨询说明来意!

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

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

相关文章

python3实现定时拉取rabbitmq队列里面的数据,并输出到文件中。

使用pika,一个Python RabbitMQ客户端库&#xff0c;结合Python的datetime和json库来实现定时从RabbitMQ队列中拉取数据&#xff0c;并将数据输出到按当天日期动态生成的文件中。 首先&#xff0c;确保您已经安装了 pika 库。如果尚未安装&#xff0c;可以使用以下命令进行安装&…

重温经典struts1之搭建环境

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 今天参加了一个项目&#xff0c;什么项目&#xff1f;struts1的项目&#xff0c;什么&#xff1f;&#xff01;现在还有struts1的项目&#xff0c;读到这里你是不是和我…

Linux scatterlist 详解

源码基于&#xff1a;Linux 5.4 约定&#xff1a; 芯片架构&#xff1a;ARM64内存架构&#xff1a;UMACONFIG_ARM64_VA_BITS&#xff1a;39CONFIG_ARM64_PAGE_SHIFT&#xff1a;12CONFIG_PGTABLE_LEVELS &#xff1a;3 0. 前言 之前在《Linux DMA... 零拷贝》博文分享了DMA 技…

网络安全卫士:上海迅软DSE的员工上网管理策略大揭秘!

在日常办公中&#xff0c;企业员工可能会在互联网上有意或无意的将一些包含内部重要信息的内容发布出去&#xff0c;从而造成不必要的违规及泄密风险&#xff0c;因此对终端用户进行规范的上网行为管理&#xff0c;既能有效预防重要数据泄密&#xff0c;同时也能提高员工办公效…

linux之tcpdump命令

在日常系统维护中&#xff0c;遇到需要抓包的需求&#xff0c;下面对linux环境使用tcpdump命令进行抓包进行分析记录。tcpdump命令可用抓取流动在网卡上的数据包。 1、tcpdump常用参数说明 -c : 抓包次数&#xff0c;达到指定次数后停止抓包-C : 文件大小&#xff0c;写入文件…

连续性变量的组间差异分析

目录 正态分布 正态分布检测 1&#xff1a;图像法 2:计算法 Shapiro–Wilk W检验&#xff08;小样本推荐&#xff09; Lilliefors正态性检验 Anderson–Darling 或AD检验 DAgostino检验&#xff08;大样本推荐&#xff09; 独立样本t检验 1&#xff0c;方差齐性检验 …

JavaEE进阶学习:SpringBoot 的创建和使用

1.什么是Spring Boot Spring 的诞生是为了简化 Java 程序的开发的&#xff0c;而 Spring Boot 的诞生是为了简化 Spring 程序开发的。 Spring Boot 翻译一下就是 Spring 脚手架&#xff0c;它就是为了快速开发 Spring 框架而诞生的 2.Spring Boot 优点 起步依赖 (创建的时候…

如何用JS实现模糊查询功能

我是写的是JSON数据通过请求来获取&#xff0c;实现这个模糊查询功能我只用了indexOf返回数组下标这一种办法。方法不限&#xff0c;下面我只展示这一种方法喽&#xff01; indexOf是什么 indexOf是返回指定内容在原字符串中的位置&#xff0c;该方法是从数组的start处或数组的…

JS实现堆排序

堆排序&#xff08;Heap Sort&#xff09;作为一种高效的排序算法&#xff0c;具有稳定的性能和卓越的时间复杂度。本文将深入研究堆排序的原理、实现方式等。 什么是堆排序 公众号&#xff1a;Code程序人生&#xff0c;个人网站&#xff1a;https://creatorblog.cn 堆排序是一…

按升序输出各个字符串。

编写程序&#xff0c;设计并实现如下功能&#xff1a;从键盘输入多个字符串&#xff0c;按升序输出各个字符串。

从零开始搭建博客网站-----框架页

实现效果如下 发布的功能还没有实现&#xff0c;仅仅实现了简单的页面显示 关键代码如下 <template><div class"layout"><el-header class"header"><div class"logo">EasyBlog</div></el-header><el-c…

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

YOLOv8改进有效涨点 | 2023 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv&#xff08;空间深度转换卷积&#xff09;技术。SPD-Conv是一种创新的空间编码技术&#xff0c;它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念&#xff1a;它是一种将图像空间信息转换为深度信息…

springboot的常用注解

声明解释这个对象&#xff08;类或者其他&#xff09;组件相关 名称作用Controller用于修饰MVC中controller层的组件SpringBoot中的组件扫描功能会识别到该注解&#xff0c;并为修饰的类实例化对象&#xff0c;通常与RequestMapping联用&#xff0c;当SpringMVC获取到请求时会…

Android多用户初探

参考博文:Android UserManagerService初始化_qluka的博客-CSDN博客 想限制多用户的行为,但是不知默认配置在哪?所以写写。 默认guest用户被限制的行为: ./frameworks/base/services/core/java/com/android/server/pm/UserTypeFactory.javaprivate static Bundle getDefaul…

国产API调试插件:Apipost-Helper

前言 Idea 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展&#xff0c;可以根据开发人员的需要进行定制和扩展&#xff0c;从而提高开发效率,今天我们就来介绍一款…

git 提交时忽略eslint检查

git commit -m “” –no-verify

Halcon深度学习药片检测

1.应用示例思路 (1) 标注数据并获取halcon字典形式的训练数据&#xff1b;(2) 数据预处理&#xff1b; (3) 模型训练&#xff1b;(4) 模型评估和验证&#xff1b;(5) 模型推理。 数据的标注使用labelimg工具&#xff0c;具体的参考以下博文&#xff1a; https://blog.csdn.…

笔记-模拟角频率和数字角频率的关系理解

先建议阅读前人此文&#xff08;点击这里&#xff09;&#xff0c;有助于理解。 模拟频率&#xff1a;f 模拟角频率&#xff1a;Ω 数字角频率&#xff1a;ω 其中&#xff1a;在模拟信号中Ω 2πf 正弦波表示&#xff1a;sin(2πft) sin(Ωt) 数字信号就是离散的&#xff…

深度学习(五):pytorch迁移学习之resnet50

1.迁移学习 迁移学习是一种机器学习方法&#xff0c;它通过将已经在一个任务上学习到的知识应用到另一个相关任务上&#xff0c;来改善模型的性能。迁移学习可以解决数据不足或标注困难的问题&#xff0c;同时可以加快模型的训练速度。 迁移学习的核心思想是将源领域的知识迁…