LeetCode 算法 3.无重复字符的最长子串(python版)

1.需求

#给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
#输入: s = “pwwkew”
#输出: 3
#解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
#请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。

2.代码

class Solution:def length_substring(self, str):# 如果字符串为空,直接返回0if not str:return 0# 定义一个变量,用来指向字符串最左边的元素,用于删除left = 0# 定义一个集合,用于存储子字符串(集合中不允许有重复值)str_child = set()# 获取当前字符串长度n = len(str)# 定义子串的最大长度max_len = 0# 定义当前遍历长度cur_len = 0for i in range(n):cur_len += 1# 如果当前字符在子串集合中,移除当前子串的最左边的元素# 同时将指向最左边的变量+1,将当前长度变量-1while str[i] in str_child:str_child.remove(str[left])left += 1cur_len -= 1# 如果当前长度大于子串的最大长度,将最大长度=当前长度if cur_len > max_len:max_len = cur_len# 将遍历到的字符加入到子串集合中str_child.add(str[i])return max_lenif __name__ == '__main__':res=Solution()str='pwwkew'index=res.length_substring(str)print(index)

3.分析

    # 解析:# 1. cur_len=1 -> p不在set()中 -> max_len=1 -> set(p)# 2. cur_len=2 -> w不在set(p)中 -> max_len=2 -> set(pw)# 3. cur_len=3 -> w在set(pw)中 -> set(w) -> left=1 -> cur_len=2# 4. cur_len=2 -> k不在set(w)中 -> set(wk)# 5. cur_len=3 -> e不在set(wk)中 -> max_len=3 -> set(wke)# 6. cur_len=4 -> w在set(wke)中 -> set(ke) -> left=1 -> cur_len=3# 7.循环结束 max_len=3

4.运行结果

在这里插入图片描述

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

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

相关文章

正则表达式初版

一、简介 REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通…

【2023我的编程之旅】七次不同的计算机二级考试经历分享

目录 我报考过的科目 第一次报考MS Office 第二次报考Web语言,C语言,C语言 第三次报考C语言,C语言,Java语言 分享一些备考二级的方法 一些需要注意的细节 结语 2023年的CSDN征文活动已经进入了尾声,在这最后我…

Cortex-M3/M4内核NVIC及HAL库函数详解(2):HAL库中断底层函数实现

0 工具准备 Keil uVision5 Cortex M3权威指南(中文) Cortex M3与M4权威指南 stm32f407的HAL库工程 STM32F4xx中文参考手册 1 HAL库中断底层函数实现 打开stm32f407的HAL库工程,可以在CMSIS->Include->core_cm4.h内找到有关NVIC寄存器设…

MySQL 的delete、truncate、drop 有什么区别

目录 一、从执行速度上来说 二、从使用场景和原理上讲 1、DELETE 2、truncate 3、drop 希望能够帮助到大家!!! 一、从执行速度上来说 drop > truncate >delete 二、从使用场景和原理上讲 1、DELETE DELETE from TABLE_NAME wh…

uniapp的IOS证书(.p12)和描述文件(.mobileprovision)申请 2024年最新教程

文章目录 准备环境登录 iOS Dev Center 下面我们从头开始学习一下如何申请开发证书、发布证书及相对应的描述文件。首先需要申请苹果 App ID (App的唯一标识)生成证书请求文件申请开发(Development)证书和描述文件申请开发(Development)证书添加调试设备…

蓝桥杯备战 每日一题 (4)

题目地址 首先我们要有一个知识储备 1 加法:(ab)%m(a%mb%m)%m 2 减法:(a-b)%m(a%m-b%m)%m 3 乘法:a*b%m(a%m)*(b%m)%m 我们可以每次计算就可以取余一次,这样就保证了最后取余的结果和一起相加再取余的结果一样 然后这个题目要怎…

Pyro —— Velocity Voxel Scale

Velocity Voxel Scale是H19.5引入的新参数,该参数可单独定义volume和速度体素;根据参数设置,可观察到模拟时间的显著变化; Velocity Voxel Scale对DOP和SOP均可用;对DOP设置,该参数在Smoke Object&#xf…

postgresql(Windows)初始化数据库教程

省流:本文章内容讲的是如何初始化postgresql数据库环境,前提是已经安装好postgresql数据库,安装步骤参考postgresql(Windows)安装教程 # 开始:安装postgresql-12.14-2-windows-x64.exe完成后进行初始化数据…

frida https抓包

web端导入证书、https代理即可解决大部分需求,但是,有些app需要处理ssl pinning验证。 废话不多说。frida处理ssl pin的步骤大体如下。 安装python3.x,并在python环境中安装frida: pip install frida pip install frida-tools下载frida-se…

tomcat原理模拟和tomcat优化

1、tomcat实现原理 servlet 没有主方法main,依赖tomcat才能运行,因为tomcat 有主方法main,由java编写 servlet中doGet和doPost方法属于非静态方法,只能依托new对象存在,tomcat无法new出来对象,因此tomcat…

fiddler捕获HTTPS

打开软件查看请求会出现:HTTPS decryption is disabled. Click to configure,表示已经禁用https捕获,点击黄色警告可以进行https配置,也可以选择菜单栏tools>options进行配置 勾选Decrypt HTTPS traffic → 点开 Actions → 重…

【接上篇】二、Flask学习之CSS(下篇)

上篇&#xff1a;二、Flask学习之CSS 3.8hover hover是用来美化鼠标悬停的效果的&#xff0c;当鼠标停放在某个区域&#xff0c;就会执行对应的hover操作。可以操作本标签的内容&#xff0c;也可以操作本标签下某一个标签的内容 3.9after <!DOCTYPE html> <html l…