无重复字符的最长子串(Python,LeetCode)

【LeetCode力扣】003.无重复字符的最长子串(Python) 阅读详情

目录

题目描述

解决方案

代码

代码走读

传送门


题目描述

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

输入/输出示例:

输入abcabcbb
输出3
解释因为无重复字符的最长子串是“abc”,所以其长度为3

解决方案

这个问题本质上是一个队列应用问题。我们依次将元素放入队列中,在入队列的时候检查要入队列的元素是否存在于队列中。如果存在,需要将队列中不断的弹出元素,直到把重复的该元素弹出,然后再将该元素入队列。此外,队列中需要有一个变量记录队列长度的最长记录,在所有字符都完成过入队列操作后,将该记录返回。

代码

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        queue = SQueue()
        for char in s:
            queue.push(char)
        return queue.max_length


class SQueue(object):
    def __init__(self):
        self.base = []
        self.max_length = 0

    def push(self, data):
        if self.exist(data):
            self.remove(data)
        self.base.append(data)
        if self.length() > self.max_length:
            self.max_length = self.length()

    def pop(self):
        return self.base.pop(0)

    def remove(self, data):
        while True:
            element = self.base.pop(0)
            if element == data:
                break

    def length(self) -> int:
        return len(self.base)

    def exist(self, data) -> bool:
        return data in self.base


if __name__ == '__main__':
    result = Solution().lengthOfLongestSubstring("aabaab!bb")
    print(result)

代码走读

# 解决方法类(LeetCode定义)
class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        # 将所有字符依次加入队列中
        queue = SQueue()
        for char in s:
            queue.push(char)
        # 返回队列最大长度记录
        return queue.max_length


# 自定义队列
class SQueue(object):
    def __init__(self):
        self.base = []
        # 对大长度记录
        self.max_length = 0

    # 加入队列
    def push(self, data):
        # 如果要加入的元素在队列中已存在,则需要依次将部分元素出队列
        if self.exist(data):
            self.remove(data)
        self.base.append(data)

        # 判断是否达到最大长度记录
        if self.length() > self.max_length:
            self.max_length = self.length()

    # 弹出队列头的元素
    def pop(self):
        return self.base.pop(0)

    # 弹出一个指定的元素。并将该元素前的所有元素弹出队列
    def remove(self, data):
        while True:
            element = self.base.pop(0)
            if element == data:
                break

    # 当前队列的长度
    def length(self) -> int:
        return len(self.base)

    # 判断一个元素是否在队列中存在
    def exist(self, data) -> bool:
        return data in self.base

# 自测用例
if __name__ == '__main__':
    result = Solution().lengthOfLongestSubstring("aabaab!bb")
    print(result)

传送门

len()函数

LeetCode试题链接

LeetCode - 3 - 无重复字符的最长子串 (Python) 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 自己想的最low解 想的是使用一个字符串存储当前的字串,用两个首尾指针检测当前字串长度,并不断更新。 class Solution: def lengthOfLongestSubstring(sel... 阅读详情

相关推荐

python【力扣LeetCode算法题库】3- 无重复字符的最长子串

无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的...

NJU phd 在读。 825

Python每日一练-----无重复字符的最长子串

⛅(day26) 🖍题目: 给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。 0 <= s.length <= 5 * 104 s由英文字母、数字、符号和空格组成 🌠示例 1: 输入: s = "abcabcbb" 输出: 3 说明: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 🌠示例 2: 输入: s = "bbbbb" 输出: 1 说明: 因为无重复字符的最长子串是 "b",所以其长度为 1。 🌠示例 3: 输入: ...

m0_61791601的博客 5811

【OpenCV】背景替换(opencv、python),照片、证件照的背景替换(抠图)

目录步骤:导入库1、读入将要抠图的图片2、create一个带颜色域的mask3、通过mask使得原图只显示汽车,即抠出所需要的部分4、将要替换掉的图像resize或裁剪到和上述图片一样的大小5、将该图片预留出将要重叠上的部分,即将mask部分改为(0,0,0)6、通过和运算使得两部分图片mask部分替换7、最后保存图片 步骤: 导入库 import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np imp

weixin_41729258的博客 4362

力扣:3.无重复字符的最长子串(Python3)

力扣:3.无重复字符的最长子串(Python3)

欢迎光临 700

大厂嵌入式面试常考八股文及算法

1.指向已被释放或无效的内存地址的指针是野指针。互斥锁是一种用于线程同步的机制,用于确保同一时间只有一个线程访问共享资源。多态是面向对象编程中的一种特性,它允许以一种统一的方式处理不同类型的对象,通过相同的接口可以表现出不同的行为。大小端(Endian)指的是在计算机存储和处理多字节数据时,字节的存储顺序。大端序(Big Endian):高位字节存储在低地址,低位字节存储在高地址。类似于将数字的高位放在左边,低位放在右边的表示方式。例如整数值0x12345678在内存中按照大端序排列为。

谢谢大家的关注 6155

COMSOL相场法模拟枝晶生长:溶质偏析模型搭建全流程

凝固过程中枝晶形貌与溶质偏析直接决定铸件微观组织与力学性能,是材料加工领域长期关注的核心问题。相场法凭借弥散界面描述天然处理拓扑演化,成为模拟枝晶生长的主流数值方法,而通用有限元平台COMSOL为自定义偏微分方程求解提供了高度灵活的实现路径。从热力学驱动、界面各向异性到溶质再分配,模型需准确耦合相场方程与浓度扩散方程,才能在二元合金凝固模拟中还原真实枝晶尖端速度、二次臂形貌及界面富集行为。围绕溶质偏析这一关键变量,建模过程涉及无量纲化参数标定、反溶质截留项配置、分离式求解器与网格各向异性控制等核心细节。该方

weixin_30402231的博客 308

python无重复最长子串

给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。 示例1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke"...

qq_51287878的博客 2969

PlutoSDR在matlab中的环境配置(包括驱动和硬件支持包)

双击下载到的驱动,除了点击接受协议和设置安装路径,其他只要点击下一步或者安装即可。登录或者注册你的账号,选择你的matlab版本(这里我的是2023b),点击下一步。设置安装路径,并选择我接受,点击下一步,即可安装完成,并在安装路径中得到。完成后,打开设备管理器,在端口和通用串行总线设备一栏,即可看见下图。点击进入,选择相应的系统安装包,这里我选择的Windows。可看到我们要安装的Pluto支持包,安装即可。右击桌面matlab,选择打开文件所在位置。右上角搜索pluto,选择并点击下一步。

weixin_53160338的博客 4865

3. 无重复字符的最长子串 Python

LeetCode中等难度题目——3.无重复字符的最长子串 Python

小明 2243

构网型逆变器下垂控制与电流限幅策略研究:理论、仿真与代码实现

随着分布式发电和微电网技术的快速发展,构网型(Grid-Forming, GFM)逆变器因其能够自主建立电压和频率参考、支撑弱电网及孤岛运行而受到广泛关注。本文提出并实现了一种基于下垂控制的构网型逆变器控制策略,将逆变器等效为受控电压源,通过L型滤波器接入配电网。在公共耦合点(PCC)处实时测量三相电压和电流,计算有功和无功功率,进而采用P-w和Q-V下垂控制生成内部频率和电压幅值,合成三相参考电压。针对故障情况下过电流问题,设计了一种自适应电流限幅模块:当电流幅值超过设定上限时,动态降低电压参考系数k_s

huanghm88的专栏 156

mongodb在游戏开发领域的优势

目前游戏服务器使用mysql作为数据库的较多,然而,使用mongodb来作为存储层,在某些方面比mysql更为方便和适合。

littleschemer的博客 1698

无重复字符的最长子串(Python)

给定一个字符串 s ,找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: s = “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 答案必须是子串的长度,“pwke” 是一个子序列,不是子串

星辰 6087

基于STM32、HAL库的TLV320AIC3204IRHBR音频接口芯片驱动程序设计

* 开启所有数字部分 */#define TLV320AIC3204_REG_LEFT_HEADPHONE_OUT_VOLUME 0x0C /* 左声道耳机输出音量 */#define TLV320AIC3204_REG_DIGITAL_AUDIO_PATH_CONTROL 0x05 /* 数字音频路径控制 */#define TLV320AIC3204_REG_ANALOG_HP_FILTER_CONTROL 0x34 /* 模拟耳机滤波器控制 *//* 最大音量 */

corlin6688的博客 521

Leetcode刷题3---无重复字符的最长子串 Python

Leetcode刷题3--无重复字符的最长子串

PeterClerk的博客 944

道威棱镜的设计参考

道威棱镜的设计参考

weixin_72050316的博客 379

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python闯LeetCode--第3题:无重复字符的最长子串

Python闯LeetCode--第3题:无重复字符的最长子串

绯荔榭•少年 788

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Python实现】3. 无重复字符的最长子串-力扣(LeetCode)

因为无重复字符的最长子串是"abc",所以其长度为 3。因为无重复字符的最长子串是 "wke",所以其长度为 3。因为无重复字符的最长子串是"b",所以其长度为 1。,说明子串重复,结束当前子串查找(,请你找出其中不含有重复字符的。的长度,"pwke" 是一个。请注意,你的答案必须是。

m0_51430275的博客 446

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

力扣 leetcode 3. 无重复字符的最长子串(python)

Topic 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 Example_1 输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 Example_2 输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 Example_3 输入: s = “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必

weixin_50791900的博客 423

【LeetCode】无重复字符的最长子串(python版)

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke...

SevenEleven的博客 373

无重复字符的最长子串 python,力扣 (LeetCode)python刷题笔记3.无重复字符的最长子串...

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...

weixin_39900582的博客 392

【Leetcode_总结】3. 无重复字符的最长子串 - python

Q: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复...

maka_uir的博客 658

LeetCode 3.Longest Substring Without Repeating Characters 无重复字符的最长子串 Python3 三种解法

LeetCode 3.Longest Substring Without Repeating Characters 无重复字符的最长子串 Python3 三种解法LeetCode 3.Longest Substring Without Repeating Characters 无重复字符的最长子串 Python3 两种解法暴力匹配滑动窗方法一滑动窗方法二 无重复字符的最长子串 Python3...

Aixoum is Me 463

【力扣-3】无重复字符的最长子串 python解题思路

【力扣-3】无重复字符的最长子串 python解题思路。

ccd9287的博客 426

3. Leetcode-无重复字符的最长子串(python)

给定一个字符串s,请你找出其中不含有重复字符的的长度。3因为无重复字符的最长子串是"abc",所以其长度为 3。1因为无重复字符的最长子串是"b",所以其长度为 1。3因为无重复字符的最长子串是"wke",所以其长度为 3。请注意,你的答案必须是的长度,"pwke"是一个子序列,不是子串。

m0_74930453的博客 402

力扣的无重复字符的最长子串解法 (Python3)

力扣的无重复字符的最长子串解法 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释:...

chutu2018的博客 369

LeetCode—3. 无重复字符的最长子串—python

LeetCode—3. 无重复字符的最长子串—python

wtzszzx的博客 1197
上一篇: 求最小公倍数(华为机试,Go)
下一篇: 无重复字符的最长子串(Go,LeetCode)
TCatTime
博客等级 码龄9年 400粉丝 256原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值