python力扣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 s 和 p 仅包含小写字母

我最开始用的排序来确定两个字符串是否相等,但在一些长的字符串上就没有那么好用。所以使用这个:collections.Counter这个操作可以返回一个字典,存储对象的出现频率。比如 p = “aabb”,那么 Counter(p)的结果是一个字典:Counter({‘a’: 2, ‘b’: 2})。

大体思路如下:使用一个先加后减的原则,首先初始化滑动窗口(从0到n-1)的字符频率为一个字典,然后从n-1开始遍历,先添加当前字符到字典中,如果该字典与p的频率字典相等,可判定为是异位词的子串,将1-n+1添加到结果列表中(目前的i是指向滑动窗口结尾的,需要减掉滑动窗口的长度),不管是否如此,都需要移除左边的字符,然后在下一次循环的时候加入右边新的字符。
另外:如果频率等于0,要注意移除key,不然字典会对应不上。

后来知道,这个思想叫滑动窗口。

class Solution(object):def findAnagrams(self, s, p):""":type s: str:type p: str:rtype: List[int]"""from collections import Counterp_count = Counter(p)n = len(p)ans = []window_count = Counter(s[:n - 1])for i in range(n - 1, len(s)):window_count[s[i]] += 1if window_count == p_count:ans.append(i - n + 1)window_count[s[i - n + 1]] -= 1if window_count[s[i - n + 1]] == 0:del window_count[s[i - n + 1]]return ans

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

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

相关文章

【大模型实战篇】使用GPTQ量化QwQ-32B微调后的推理模型

1. 量化背景 之所以做量化&#xff0c;就是希望在现有的硬件条件下&#xff0c;提升性能。量化能将模型权重从高精度&#xff08;如FP32&#xff09;转换为低精度&#xff08;如INT8/FP16&#xff09;&#xff0c;内存占用可减少50%~75%。低精度运算&#xff08;如INT8&#xf…

【MySQL】架构

MySQL架构 和其它数据库相比&#xff0c;MySQL有点与众不同&#xff0c;它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上&#xff0c;插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实…

JavaScript 金额运算精度丢失问题及解决方案

JavaScript 金额运算精度丢失问题及解决方案 1. 前言2. 为什么 JavaScript 计算金额会精度丢失&#xff1f;2.1 JavaScript 使用 IEEE 754 双精度浮点数2.2 浮点运算错误示例**错误示例 1&#xff1a;0.1 0.2 ≠ 0.3****错误示例 2&#xff1a;浮点乘法精度问题** 3. 解决方案…

Docker安装,并pullMySQL和redis

卸载原Docker 您的 Linux 发行版可能提供非官方的 Docker 软件包&#xff0c;这可能与 Docker 提供的官方软件包冲突。在安装 Docker Engine 正式版之前&#xff0c;您必须先卸载这些软件包。 sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common…

国内首台太空采矿机器人亮相,宇宙资源开发迈入新阶段

随着地球资源的日益枯竭&#xff0c;人类将目光投向了浩瀚的宇宙。太空采矿作为一项前沿科技&#xff0c;正逐步从科幻走向现实。近日&#xff0c;中国矿业大学成功研制出国内首台太空采矿机器人&#xff0c;标志着我国在太空资源开发领域迈出了重要一步。 太空采矿并非新鲜概念…

简介PyCDE:Python CIRCT Design Entry

简介PyCDE&#xff1a;Python CIRCT Design Entry 引言 在硬件设计和验证领域&#xff0c;随着设计复杂性的增加&#xff0c;传统的方法往往难以满足现代设计的需求。PyCDE&#xff08;Python CIRCT Design Entry&#xff09;作为CIRCT项目的一部分&#xff0c;旨在为硬件设计…

市场热点复盘20240319

以下是对当前市场热点板块的分析总结&#xff0c;按逻辑分类如下&#xff1a; 一、机器人产业链核心标的 1. 减速器与核心部件 襄阳轴承&#xff1a;直接受益人形机器人减速器轴承需求&#xff0c;技术国内领先。金帝股份&#xff1a;聚焦机器人手指关节谐波减速机保持架&am…

目标检测——清洗数据

清洗VOC格式数据集代码示例 import os import xml.etree.ElementTree as ETdef process_annotations(image_folder, annotation_folder):# 遍历标签文件夹中的所有XML文件for xml_file in os.listdir(annotation_folder):if not xml_file.endswith(.xml):continuexml_path os…

Kubeasz工具快速部署K8Sv1.27版本集群(二进制方式)

文章目录 一、基本信息二、服务器初始化操作三、使用Kubeasz部署K8S集群四、验证集群 一、基本信息 1、部署需要满足前提条件&#xff1a; 注意1&#xff1a;确保各节点时区设置一致、时间同步&#xff1b;注意2&#xff1a;确保在干净的系统上开始安装&#xff1b;注意3&…

RG-S3760应用协议配置

RG-S3760应用协议配置 1. dhcp 服务配置 提问&#xff1a;如何在设备上开启dhcp 服务&#xff0c;让不同VLAN 下的电脑获得相应的IP 地址&#xff1f; 回答&#xff1a; 步骤一&#xff1a;配置VLAN 网关IP 地址&#xff0c;及将相关端口划入相应的VLAN 中 S3760#con t S…

Java 文件和IO流基础(生动形象版)

系列文章目录 Java文件和IO流基础部分 文件VSIO流 文章目录 系列文章目录前言一、文件的定义和理解&#xff1a; 1.专业定义&#xff1a; 2.文件系统和路径&#xff1a; 二、IO流的定义和分类 1.定义&#xff1a;2.流的分类&#xff1a;修饰器模式的核心作用&#xff1a;基础结…

Linux驱动学习笔记(四)

高级字符设备进阶 1.一个完整的IO过程包含以下几个步骤&#xff1a;1应用程序向操作系统发起IO调用请求(系统调用)&#xff1b;2操作系统准备数据&#xff0c;把IO设备的数据加载到内核缓冲区&#xff1b;3操作系统拷贝数据&#xff0c;把内核缓冲区的数据从内核空间拷贝到应用…

el-table的行向上移动向下移动,删除选定行

<template><el-table :data"tableData" border style"width: 100%"><!-- 其他列 --><el-table-column label"ID"><template slot-scope"scope">{{ scope.$index }}</template></el-table-colu…

人工智能之数学基础:矩阵的降维

本文重点 在现实世界中,我们经常会遇到高维数据。例如,图像数据通常具有很高的维度,每个像素点都可以看作是一个维度。高维数据不仅会带来计算和存储上的困难,还可能会导致 “维数灾难”,即随着维度的增加,数据的稀疏性和噪声也会增加,从而影响数据分析的效果。因此,我…

2025年,电脑还需要分区吗?

随着2025年的到来&#xff0c;电脑存储空间已经不像以前那么金贵&#xff0c;固态硬盘&#xff08;SSD&#xff09;容量更大、速度更快&#xff0c;云存储也成了日常标配。许多人开始质疑&#xff1a;电脑还需要像以前那样分区吗&#xff1f; 一、分区到底是什么意思&#xff…

Springboot项目集成maven-assembly-plugin进行打包

通常我们将应用部署到服务器的某个目录下&#xff0c;一般情况下我们会提供像target&#xff08;存放应用jar包&#xff09;&#xff0c;bin&#xff08;项目启动/停止脚本&#xff09;&#xff0c;config&#xff08;项目配置文件&#xff09;&#xff0c;logs&#xff08;项目…

CSS3 基础布局技术与响应式设计

1. CSS3 基础与布局技术 1.1 Flexbox 布局 Flexbox 是一种一维布局模型&#xff0c;适合用于在一个方向上&#xff08;行或列&#xff09;排列元素。 基本概念&#xff1a; 容器&#xff08;Container&#xff09;&#xff1a;应用 display: flex; 的元素。项目&#xff08…

鸿蒙NEXT项目实战-百得知识库01

代码仓地址&#xff0c;大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点&#xff1a; 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…

【DeepSeek应用】本地部署deepseek模型后,如何在vscode中调用该模型进行代码撰写,检视和优化?

若已成功在本地部署了 DeepSeek 模型(例如通过 vscode-llm、ollama 或私有 API 服务),在 VS Code 中调用本地模型进行代码撰写、检视和优化的完整流程如下: 1. 准备工作:确认本地模型服务状态 模型服务类型: 若使用 HTTP API 服务(如 FastAPI/Flask 封装),假设服务地址…

jenkins 配置邮件问题整理

版本&#xff1a;Jenkins 2.492.1 插件&#xff1a; A.jenkins自带的&#xff0c; B.安装功能强大的插件 配置流程&#xff1a; 1. jenkins->系统配置->Jenkins Location 此处的”系统管理员邮件地址“&#xff0c;是配置之后发件人的email。 2.配置系统自带的邮件A…