首页 > 其他分享 >3. 无重复字符的最长子串

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

时间:2024-12-09 23:33:53浏览次数:7  
标签:子串 字符 cur max len lookup 最长

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

 

示例 1:

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

示例 2:

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

示例 3:

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

 

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        if not s:return 0
        left = 0
        lookup = set()
        n = len(s)
        max_len = 0
        cur_len = 0
        for i in range(n):
            cur_len += 1
            while s[i] in lookup:
                lookup.remove(s[left])
                left += 1
                cur_len -= 1
            if cur_len > max_len:max_len = cur_len
            lookup.add(s[i])
        return max_len

 

提示:

  • 0 <= s.length <= 5 * 104
  • s 由英文字母、数字、符号和空格组成

标签:子串,字符,cur,max,len,lookup,最长
From: https://www.cnblogs.com/xxlm/p/18596256

相关文章

  • 字符串
    字符串\被称作转义字符,除了用来表示引号,还有比如用\n表示字符串中的换行(相当于按一下回车键的效果)\t表示字符串中的制表符(相当于按一下tab键的效果)\\表示字符串中的\(因为单个斜杠被用来做转义了,所以真的要表示\字符,就要两个斜杠)\还有个用处,就是用来在代码中换行,而不......
  • C++ 1093 字符串A+B (乙级)
    给定两个字符串A和B,本题要求你输出A+B,即两个字符串的并集。要求先输出A,再输出B,但重复的字符必须被剔除。输入格式:输入在两行中分别给出A和B,均为长度不超过106的、由可见ASCII字符(即码值为32~126)和空格组成的、由回车标识结束的非空字符串。输出格式:在一行中......
  • Python与人工智能37——字符串全排列与算法应用场景
    ......
  • mysql 256byte可以存多少汉字,字符编码length,char_length函数
    mysql256byte可以存多少汉字,字符编码length,char_length函数在MySQL中,UTF-8编码下,每个汉字至少占用3个字节。因此,256字节可以存储的汉字数量为:(256字节)/(3字节/汉字)=85.3汉字由于UTF-8编码中,对于单字节的字符、双字节字符和三字节字符有不同的编码方式,实际使用中可能不能......
  • PbootCMS中如何使用substr参数截取字符串?
    在PbootCMS中,substr 参数用于截取字符串的一部分,这对于显示特定长度的内容非常有用。substr 参数可以传递两个数字,分别表示起始位置和截取长度。以下是详细的步骤和实现方法:理解substr参数:substr=x,y:x 表示起始位置,y 表示截取长度。如果只传递一个数字,则从该位置开始截......
  • ZZNUOJ_1077 : 字符串加密(C/C++/Java算法源码&注释)
    题目描述输入一串字符和一个正整数k,将其中的英文字母加密并输出加密后的字符串,非英文字母不变。加密思想:将每个字母c加一个序数k,即用它后面的第k个字母代替,变换公式:c=c+k。如果字母为z,则后一个字母是a,也就是字母字符形成一个圆。输入输入第一行是一个整数k,k是int范围......
  • LeetCode题集-5 - 最长回文子串(一)
    题目:给你一个字符串 s,找到 s 中最长的回文子串。这一题作为中等难度,常规解法对于大多数人应该都没有难度。但是其中也有超难的解决办法,下面我们就一起由易到难,循序渐进地来解这道题。01、暴力破解法对于大多数题目来说,在不考虑性能的情况下,暴力破解法常常是最符合人的思维......
  • 力扣300.最长递增子序列(动态规划)
    注:本文只是为了记录作者在刷题过程中的一下思路和心得。思路:每次考虑以第i个元素结尾时能够构成的最长子序列。例如:nums=[0,1,3,2],我们从下标为0的元素开始考虑,如果以下标为0的元素结尾,那么这个子序列的长度就为1;然后依次我们考虑后面的元素。当我们考虑到第i个元......
  • 力扣718.最长重复子数组
    思路:用动态规划的思路,即建立dp[n][m],其中n表示nums1的长度,m表示表示nums2的长度,首先明确:d[i][j]的意义,他表示以nums1[i]元素结尾的字符串和以nums2[j]元素结尾的字符串他们的重复子数组的最大长度。其次:当nums1[i]==nums2[j]时,dp[i][i]=dp[i-1][j-1]+1;dp初始化,首先我们只......
  • Task06&&07 循环与字符串:Python 基础学习
    一、循环For循环For循环基于提供的范围,能让我们重复执行特定次数的操作。例如,foriinrange(m,n+1)就能从m循环到n。特别要注意,range(m,n+1)是左闭右开区间。奇偶数列生成超简单,像foriinrange(0,10,2)就能输出0到10之间的偶数,即0、2、4、6、8。要是想反......