当前位置: 首页 > news >正文

【LeetCode 热题 100】3. 无重复字符的最长子串 | python 【中等】

美美超过管解

题目:

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

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

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

注意:

  1. 考虑空字符串问题
  2. 有重复之后要在重复的那个后面新建序列,减少时间,故需要列表储存(标准做法里用的集合捏)

标准做法:

把重复的set.remove(),a指针步进,没有重复的话,b指针一直步进

怎么感觉没有我那个快捏

class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        # 哈希集合,记录每个字符是否出现过
        occ = set()
        n = len(s)
        # 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
        rk, ans = -1, 0
        for i in range(n):
            if i != 0:
                # 左指针向右移动一格,移除一个字符
                occ.remove(s[i - 1])
            while rk + 1 < n and s[rk + 1] not in occ:
                # 不断地移动右指针
                occ.add(s[rk + 1])
                rk += 1
            # 第 i 到 rk 个字符是一个极长的无重复字符子串
            ans = max(ans, rk - i + 1)
        return ans
        

是真的!

官方:

我的:【必须记录下来】

自己的做法:【通过并超过】

没看解答,写了半小时写出来啦,中间因为字符串不太熟卡了一下

双指针yyds【这里用滑动窗口捏】

class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        # 先写循环结束条件
        # 双指针
        # 放入集合【重大问题:有重复之后要在重复的那个后面新建序列,需要列表】
        a = 0
        b = 0
        
        if s == "":
            return 0
        ls = s[a]
        max_len = 1
        while b < len(s)-1:
            b += 1
            
            if s[b] in ls:
                a = ls.find(s[b]) +1+a 
                ls = s[a:b+1]
            else:
                ls = ls+s[b]
            cur_len = len(ls)
            if max_len < cur_len:
                max_len = cur_len
            
        return max_len
        

相关文章:

  • 算法策略深度解析与实战应用
  • 项目实战:Qt图像拼接渐进色图层生成工具v1.0.0(预设四路拼接,多路可通过多图叠层实现)
  • 再论滑动窗口与行头阻塞
  • Ai-web 1.0靶场通关攻略
  • 【HeadFirst系列之HeadFirst设计模式】第16天之生成器模式(Builder Pattern):让对象构建更优雅!
  • [力扣每日一练]关于所有不同域名的查找
  • 在命令的轨迹中:创建、删除与查看普通用户,Linux用户管理的风华与深邃
  • 嵌入式 ARM Linux 系统构成(4):设备驱动程序
  • 第十五届蓝桥杯 Python B 组省赛(满分题解)
  • 物联网的隧道监测场景中,要实现全面且有效的监测
  • 模型 - Qwen 2.5
  • 深度学习模型Transformer初步认识整体架构
  • 《几何原本》命题I.16
  • 江科大51单片机笔记【10】蜂鸣器(上)
  • char int string 的互相转换
  • 国产化替换案例:CACTER邮件网关为Groupwise系统加固邮件安全防线
  • Shell 编程中 `$?` 的陷阱:基于一个性别判断的例子
  • c++全排列
  • 97k倍区间
  • Windows编译环境搭建(MSYS2\MinGW\cmake)