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

LeetCode[3] 无重复字符的最长子串

时间:2022-09-28 22:44:57浏览次数:67  
标签:子串 字符 temp len current str LeetCode 指针

1 无重复字符的最长子串

1.1 题目描述

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

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

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

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

        题目链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/

1.2 思路分析

        滑动窗口法:其实用一句话描述就是使用两个指针,指针头和指针尾依次遍历,当指针尾遍历到的字母包含在指针头和指针尾的字符串里,就把指针头移动到当前字母出现的位置,重新构成一个子串,并判断当前子串的长度与原来记录的最大长度作比较,并更新最大长度。示意图如下面:

img

1.3 代码实现

思路一:滑动窗口法

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        # 思路一:滑动窗口法
        temp_str = ''
        max_len, current_len = 0, 0
        for i in range(len(s)):
            if s[i] not in temp_str:
                temp_str += s[i]
                current_len += 1
            else:
                index = temp_str.index(s[i])
                temp_str = temp_str[index+1:]
                temp_str += s[i]
                current_len = len(temp_str)
            if max_len < current_len:
                max_len = current_len
        
        return max_len

标签:子串,字符,temp,len,current,str,LeetCode,指针
From: https://www.cnblogs.com/carpediem2021/p/16739846.html

相关文章

  • Python 字符串前面加u,r,b的含义
    1、字符串前加ustr=u'中文字符串'作用:解决中文乱码问题后面字符串以Unicode格式进行编码,一般用在中文字符串前面2、字符串前加rs=r'\tt'print(s)\tts='\tt'print(s)t在......
  • Python字符串格式化%s%d%f详解
    %s字符串string="hello"#%s打印时结果是helloprint"string=%s"%string#output:string=hello#%2s意思是字符串长度为2,当原字符串的长度超过2时,按原长度打......
  • LeetCode[13] 罗马数字转整数
    1罗马数转整数1.1题目描述        罗马数字包含以下七种字符: I, V, X, ``L,C,D 和 M`。字符数值I1V5X10L50C100D500M100......
  • C++11:noexcept修饰符、nullptr、原生字符串字面值
    noexcept修饰符voidfunc3()throw(int,char)//只能够抛出int和char类型的异常{//C++11已经弃用这个声明throw0;}voidBlockThrow()throw()//代表此函数不能抛......
  • 驱动开发:内核字符串转换方法
    在内核编程中字符串有两种格式ANSI_STRING与UNICODE_STRING,这两种格式是微软推出的安全版本的字符串结构体,也是微软推荐使用的格式,通常情况下ANSI_STRING代表的类型是char......
  • 算数表达式求值 算数表达式字符串求值
    packagecom.bison.tracecode.utils;importcn.hutool.core.util.NumberUtil;importjava.math.RoundingMode;importjava.util.Collections;importjava.util.Stack......
  • Python字节流,字符串,16进制相互转换
    python版本:Python3.81.字节流转成字符串2.字符串变字节流3.16进制字节流变成字节流4.16进制字符串变成字符串字节流 ......
  • 3.字符串
    字符串字符串是Python中最常用的数据类型。我们可以使用引号('或")来创建字符串。创建字符串很简单,只要为变量分配一个值即可#单引号var1='HelloWorld!'#......
  • Python 变量,注释,字符串,快捷键
    Python学习其他语言通过括号,大括号表示各个模块所属关系,而python是通过缩进,所以缩进对于python尤为重要1.变量1.1和其它语言不同,python中变量不用提前声明,每个语句之后......
  • leetcode977-有序数组的平方
    977.有序数组的平方原本直接暴力的做法没有利用到原数组是有序这个条件。这里直接把左边的绝对值大于右边的直接放到最后面,这样就减少很多不必要的操作。classSoluti......