【leetcode100】找到字符串中所有字母异位词

1、题目描述

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

示例 1:

输入: s = "cbaebabacd", p = "abc"

输出: [0,6]

解释: 起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。 起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。

2、初始思路

2.1 思路

前后指针同时进行寻找

2.2 犯错点

需要根据p的长度创建指针,超出时间限制

3 优化算法

3.1 思路

使用collections.Counter进行技术操作,创建滑动窗口进行求解。

from collections import Counter 
class Solution(object):def findAnagrams(self, s, p):""":type s: str:type p: str:rtype: List[int]"""ls = len(s)lp = len(p)count_p = Counter(p)count_s = Counter(s[:lp-1])result = []if ls < lp:return resultfor i in range(lp-1,ls):count_s[s[i]] += 1if count_p == count_s:result.append(i-lp+1)count_s[s[i-lp+1]] -= 1if count_s[s[i-lp+1]] == 0:del count_s[s[i-lp+1]]return result

4 总结--Counter

collections.Counter 是 Python 标准库中的一个类,用于计数可哈希对象(通常是字符串中的字符)。它是一个字典的子类,其中元素作为键,它们的计数作为值。

4.1 创建Counter

(1)从可迭代对象进行创建

from collections import Counterc = Counter('abracadabra')
print(c)  # 输出: Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})

(2)从字典创建

c = Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})
print(c)  # 输出: Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})

(3)直接使用关键字参数进行创建

c = Counter(a=5, b=2, r=2, c=1, d=1)
print(c)  # 输出: Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})

4.2 Counter的使用

(1)elements():返回一个迭代器,每个元素重复其计数的次数

c = Counter(a=4, b=2, c=1)
print(list(c.elements()))  # 输出: ['a', 'a', 'a', 'a', 'b', 'b', 'c']

(2)most_common([n]):返回一个列表,内容为最常见的n个元素及其计数,按技术从高到低进行排序,如果n不指定,则输出所有元素。

c = Counter('abracadabra')
print(c.most_common(3))  # 输出: [('a', 5), ('b', 2), ('r', 2)]

(3)subtract([iterable-or-mapping]):从一个可迭代对象或另一个映射(或计数器)中减去元素的计数。

c = Counter(a=4, b=2, c=1)
c.subtract({'a': 2, 'b': 1})
print(c)  # 输出: Counter({'a': 2, 'b': 1, 'c': 1})

(4)update([iterable-or-mapping]):增加元素的计数,类似于字典的 update 方法。

c = Counter(a=4, b=2, c=1)
c.update({'a': 2, 'b': 1})
print(c)  # 输出: Counter({'a': 6, 'b': 3, 'c': 1})

(5)访问和修改计数:你可以像访问字典一样访问和修改 Counter 中的计数。

c = Counter(a=4, b=2, c=1)
print(c['a'])  # 输出: 4
c['a'] += 1
print(c['a'])  # 输出: 5

(6)删除元素:如果某个元素的计数变为 0,它不会从 Counter 中删除。你可以手动删除它。

c = Counter(a=4, b=2, c=1)
del c['a']
print(c)  # 输出: Counter({'b': 2, 'c': 1})

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

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

相关文章

乐鑫发布 esp-iot-solution v2.0 版本

今天&#xff0c;乐鑫很高兴地宣布&#xff0c;esp-iot-solution v2.0 版本已经发布&#xff0c;release/v2.0 分支下的正式版本组件将为用户提供为期两年的 Bugfix 维护&#xff08;直到 2027.01.25 ESP-IDF v5.3 EOL&#xff09;。该版本将物联网开发中常用的功能进行了分类整…

c/c++ 用easyx图形库写一个射击游戏

#include <graphics.h> #include <conio.h> #include <stdlib.h> #include <time.h>// 定义游戏窗口的大小 #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600// 定义玩家和目标的尺寸 #define PLAYER_SIZE 50 #define TARGET_SIZE 20// 玩家的结构…

面经-综合面/hr面

面经-综合面/hr面 概述1.大学期间遇到的困难&#xff0c;怎么解决的2. 大学期间印象最深/最难忘的是什么3. 大学里面担任了什么职务没&#xff1f;做了什么工作&#xff1f;4. 大学最大的遗憾是什么&#xff1f;5. 对自己的未来规划6. 对自己的评价7. 自己的优缺点8. 对公司的认…

pyspark实现基于协同过滤的电影推荐系统

最近在学一门大数据的课&#xff0c;课程要求很开放&#xff0c;任意做一个大数据相关的项目即可&#xff0c;不知道为什么我就想到推荐算法&#xff0c;一直到着手要做之前还没有新的更好的来代替&#xff0c;那就这个吧。 推荐算法 推荐算法的发展由来已久&#xff0c;但和…

虚拟现实(VR)与增强现实(AR)有什么区别?

虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#xff09;与增强现实&#xff08;Augmented Reality&#xff0c;AR&#xff09;在多个方面存在显著差异。以下是对这两者的详细比较&#xff1a; 一、概念定义 虚拟现实&#xff08;VR&#xff09;&#xff1a; 是一种…

【图像去噪】论文精读:Deep Image Prior(DIP)

请先看【专栏介绍文章】:【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中) 文章目录 前言Abstract1. Introduction2. Method3…

十、Spring Boot集成Spring Security之HTTP请求授权

文章目录 往期回顾&#xff1a;Spring Boot集成Spring Security专栏及各章节快捷入口前言一、HTTP请求授权工作原理二、HTTP请求授权配置1、添加用户权限2、配置ExceptionTranslationFilter自定义异常处理器3、HTTP请求授权配置 三、测试接口1、测试类2、测试 四、总结 往期回顾…

Unity3d C# 实现一个基于UGUI的自适应尺寸图片查看器(含源码)

前言 Unity3d实现的数字沙盘系统中&#xff0c;总有一些图片或者图片列表需要点击后弹窗显示大图&#xff0c;这个弹窗在不同尺寸分辨率的图片查看处理起来比较麻烦&#xff0c;所以&#xff0c;需要图片能够根据容器的大小自适应地进行缩放&#xff0c;兼容不太尺寸下的横竖图…

用 llama.cpp 体验 Meta 的 Llama AI 模型

继续体验 Meta 开源的 Llama 模型&#xff0c;前篇 试用 Llama-3.1-8B-Instruct AI 模型 直接用 Python 的 Tranformers 和 PyTorch 库加载 Llama 模型进行推理。模型训练出来的精度是 float32, 加载时采用的精度是 torch.bfloat16。 注&#xff1a;数据类型 torch.float32, t…

Axios与FastAPI结合:构建并请求用户增删改查接口

在现代Web开发中&#xff0c;FastAPI以其高性能和简洁的代码结构成为了构建RESTful API的热门选择。而Axios则因其基于Promise的HTTP客户端特性&#xff0c;成为了前端与后端交互的理想工具。本文将介绍FastAPI和Axios的结合使用&#xff0c;通过一个用户增删改查&#xff08;C…

深入理解B-树与B+树:数据结构中的高效索引利器

一、引言 在数据库系统中&#xff0c;索引是提高查询效率的关键技术。而B-树和B树作为常用的索引数据结构&#xff0c;以其高效的查询、插入和删除操作备受青睐。下面我们将分别探讨B-树和B树的结构及其优缺点。 二、B-树 B-树简介 B-树&#xff08;Balanced Tree&#xff…

DVWA 在 Windows 环境下的部署指南

目录预览 一、靶场介绍二、前置准备1. 环境准备2.靶场下载 三、安装步骤1.配置Phpstudy2.配置数据库3.配置DVWA4.登入DVWA靶场 四、参考链接 一、靶场介绍 DVWA 一共包含了十个攻击模块&#xff0c;分别是&#xff1a; Brute Force&#xff08;暴力&#xff08;破解&#xff…

Spring Bean 初始化如何保证线程安全

创作内容丰富的干货文章很费心力,感谢点过此文章的读者,点一个关注鼓励一下作者,激励他分享更多的精彩好文,谢谢大家! Spring Bean 中的参数通常有几种初始化方法: 通过构造函数注入: @Service public void MyService {private MyData myData;public MyService(MyData…

虚拟机ubuntu-20.04.6-live-server搭建OpenStack:Victoria(二:OpenStack环境准备-compute node)

文章目录 Host networkinga. 配置网络接口b. 验证连通性 Network Time Protocol (NTP)a. 安装并配置组件b. 验证操作 OpenStack packagesa. 下载Victoria云存储仓库b. 安装示例c. 安装客户端 沉浸版指令及内容&#xff1a; Host networking a. 配置网络接口 切换至超级用户模…

微软企业邮箱:安全可靠的企业级邮件服务!

微软企业邮箱的设置步骤&#xff1f;如何注册使用烽火域名邮箱&#xff1f; 微软企业邮箱作为一款专为企业设计的邮件服务&#xff0c;不仅提供了高效便捷的通信工具&#xff0c;更在安全性、可靠性和功能性方面树立了行业标杆。烽火将深入探讨微软企业邮箱的多重优势。 微软…

使用UE5.5的Animator Kit变形器

UE5.5版本更新了AnimatorKit内置插件&#xff0c;其中包含了一些内置变形器&#xff0c;可以辅助我们的动画制作。 操作步骤 首先打开UE5.5&#xff0c;新建第三人称模板场景以便测试&#xff0c;并开启AnimatorKit组件。 新建Sequence&#xff0c;放入测试角色 点击角色右…

JS异步进化与Promise

JavaScript 是单线程的&#xff0c;但它并不是无法处理异步操作。相反&#xff0c;JavaScript 的单线程特性和其事件循环机制使得它在处理异步任务方面非常高效 回调函数(Callback Functions) 一开始JS使用回调的形式来处理异步的结果,但是异步的弊端很大 例如:无法更好的处理…

应用案例丨坤驰科技双通道触发采集实时FFT数据处理系统

双通道触发采集实时FFT数据处理系统 应用案例 双通道采集&#xff0c;每路通道需要2GSPS的采样率&#xff0c;每2毫秒采集一次&#xff0c;每次采集数据量为65536*2 Sample。采集的信号频率满足奈奎斯特采样定律。采集数据后&#xff0c;每路通道的数据均做运算以及FFT实时处理…

OGRE 3D----3. OGRE绘制自定义模型

在使用OGRE进行开发时,绘制自定义模型是一个常见的需求。本文将介绍如何使用OGRE的ManualObject类来创建和绘制自定义模型。通过ManualObject,开发者可以直接定义顶点、法线、纹理坐标等,从而灵活地构建各种复杂的几何体。 Ogre::ManualObject 是 Ogre3D 引擎中的一个类,用…

如何用Excel做数据可视化自动化报表?

作为一个经常需要做数据报表的人&#xff0c;我最常用的工具是Excel&#xff0c;对于我来说用Excel处理繁琐冗杂的数据并不难&#xff0c;但是我发现身边很多人用Excel做的数据报表非常的耗时&#xff0c;而且最后的成品也是难以直视&#xff0c;逻辑和配色等都非常的“灾难”。…