文章来源: 饭饭的Python学习之路

作者: 一粒米饭

今天要挑战的是“无重复字符的最长子串”。

难度中等

题目描述:

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

示例1:

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

示例2:

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

示例3:

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

题目原始链接

解题思路:

这道题的解题思路主要是利用滑动窗口思维。

什么是滑动窗口

滑动窗口作为双指针算法的一种特殊形式,在日常算法中尤其是字符串匹配查询中经常用到。

其基本思想是通过使用特定大小的子列表,在遍历完整列表的同时进行特定的操作,以达到降低了循环的嵌套深度。

滑动窗口的基本逻辑如下:

  1. 使用双指针中的左右指针技巧,初始化 left = right = 0,把索引闭区间 [left, right] 称为一个「窗口」。
  2. 先不断地增加 right 指针扩大窗口 [left, right],直到窗口符合要求
  3. 停止增加 right,转而不断增加 left 指针缩小窗口 [left, right],直到窗口中的字符串不再符合要求。同时,每次增加 left,我们都要更新一轮结果。
  4. 重复第 2 和第 3 步,直到 right 到达尽头。

代码实现

class Solution:    def lengthOfLongestSubstring(self, s: str) -> int:        w = ""        l = 0        max_l = 0        for c in s:            if c in w:                left = w.index(c) + 1                w = w[left:]                l -= left            w += c            l += 1            if l > max_l:                max_l = l        return max_l

结果:

除了无重复字符的最长子串滑动窗口还可以用来解决连续子数组的最大和和为特定值的连续正整数序列长度最小的子数组等问题。

c++ 数组的输入遇到特定字符停止输入_滑动窗口思维--挑战“无重复字符的最长子串”相关推荐

  1. 利用滑动窗口法解决无重复字符的最长子串

    无重复字符的最长子串 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最 ...

  2. 滑动窗口技术-最大无重复字符问题(暴力,滑动窗口,动态规划)

    leetcode 第三题,最长无重复的字串 返回一个字符中最大无重复字符的长度 1.暴力求解 2.线性滑动左右指针 3.跳跃滑动左指针 暴力求解忽略 线性滑动左右指针: public int leng ...

  3. 滑动窗口:LeetCode 3 无重复字符的最长子串

    力扣 思路:滑动窗口 窗口信息:               窗口中每个字符出现次数 用长度为128个长度的数组(ASCII码表示下标)记录字符出现次数,因为数组具有随机存储特性,所以查找的时间复杂度 ...

  4. 无重复字符最长字串的滑动窗口结合哈希表解法(注释详尽)

    这个解法是由leetcode上的jack这名用户上传,巧妙的使用了哈希表来缩短执行时间,非常值得学习,但是原作者并没有将原理和亮点讲的很清楚,所以我重新将它梳理了一遍发了出来. 思路: 这个解法是以常 ...

  5. 快手校招算法题 无重复字符的最长子串

    时间限制:5秒 空间限制:32768K 给定一个字符串,请找出其中长度最长且不含有重复字符的子串,计算该子串长度. 输入描述: 输入类型为字符串,例如"abcde" 输出描述: 输 ...

  6. 汇编语言求无符号数组中出现的次数最多数_【今日最佳leecode通俗易懂】无重复字符的最长子串...

    相信看了这个标题的同学,对这道题以已经非常不陌生了,就是leecode当中的第三题,之所以要单独的写一写主要对我来说,里面涉及到有一个滑动窗口, 散列表, 字符编码等知识点比较重要,也有几个小技巧,这 ...

  7. python输入多个字符串、输入最长的一串_无重复字符的最长子串(Python之暴力求解)...

    无重复字符的最长子串(Python之暴力求解) 例题: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: (1) 输入: "abcabcbb" 输出: 3 ...

  8. LeetCode.3-最长无重复字符子串(Longest Substring Without Repeating Characters)

    这是悦乐书的第341次更新,第365篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第2题Longest Substring Without Repeating Cha ...

  9. 刻意练习:LeetCode实战 -- Task16. 无重复字符的最长子串

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

最新文章

  1. java 时间戳 与时间的转换
  2. 计算机面试的时候写过的代码,程序员悲催瞬间:来之不易的美团面试,我尽然挂了(还原真实场景)...
  3. 【剑指 offer】(48)—— 不能被继承的类
  4. 2021-04-26
  5. jeesit的简单使用(四)
  6. 掘金15W沸点简单分析(一)
  7. 前后端利用accessToken与refreshToken无感刷新
  8. [填坑] 解决 Ubuntu ssh 登录自动休眠问题
  9. Node.js潮牌官网 毕业设计-附源码 010955
  10. 《剑破武林》用户注册协议
  11. 面试官:说一下公平锁和非公平锁的区别?
  12. 基于 OE、Yocto、Arago 构建 TI 板卡的定制文件系统
  13. 小学计算机水平测试论坛,热烈祝贺我校学生在市计算机水平测试中再创佳绩
  14. python-测试框架nose(nosetests)简介
  15. List集合去重方法
  16. 【方法篇·壹】css开发技巧-全局样式设置和局部样式
  17. torch中manual_seed的作用
  18. 文件底层I/O基本操作——东写西读南开北关中位移_莫韵乐的Linux英雄传
  19. 图文详解如何将书签bookmarks导回到chrome?
  20. [原创]我个人整理的AD/2000技巧,各位收藏吧!60多个。

热门文章

  1. 捋一捋js面向对象的继承问题
  2. c# automapper 使用
  3. WordPress Mail Subscribe List插件‘sml_name’参数HTML注入漏洞
  4. HttpContext(三)-Request
  5. IsNull 和 SQL语句中CASE WHEN用法
  6. JavaScript --- this
  7. vue项目代码改进(一)login组件
  8. WPF WebBrowser 加载 html ,出现安全警告, 运行 脚本和 activeX 控件,
  9. 伯纳德•罗森伯格先生参加华为技术2016首届国际光电连接技术研讨会
  10. mysql-5.5.50-winx64