滑动窗口

滑动窗口用途

  • 用于解决连续子串连续子数组问题

模式说明

  • 用两个指针,标识窗口边界
  • 用一些状态变量标识窗口当前状态
  • 窗口长度可以固定,也可以可变,取决于具体问题
  • 窗口有左边扩大缩小,右边扩大缩小,和整体左右移动几种移动形式

一般步骤

  1. 判断是整体移动类型,还是左右移动类型
  2. 如何表示当前窗口状态(如:窗口长度,最大一般设为0,最小一般设为超过总长度的值)
  3. 有多少种临界状态,临界状态如何移动窗口

力扣题目举例


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

    步骤一: 判断是整体移动类型,还是左右移动类型

    • 很明显该题目不是固定长度的,所以选择 左右移动类型。

    步骤二如何表示当前窗口状态

    • 窗口中子串是否重复的状态,这里使用map,不使用字符串的index等方法
    • 窗口中子串长度

    步骤三有多少种临界状态,临界状态如何移动窗口

    • 当窗口没有重复字符,右边窗口向右扩展
    • 当窗口有重复字符,左边窗口向右扩展

    编码

     def 无重复字符的最长子串(目标字符串):
       # 边界情况 略
       # 定义 左右移动类型 窗口指针
       窗口左边下标=0
       窗口右边下标=0
       # 定义窗口状态变量
       当前存在字符字典=Map()
       当前窗口长度=0
       # 循环判断窗口状态,并且做出相应处理
       最大长度=0
       for 一个字符 in 目标字符串: 
         if  当前存在字符字典[一个字符]==None:
           # 右边窗口右移动
           窗口右边下标+=1
           # 加入字典
           当前存在字符字典[一个字符]=True
           # 长度加1
           当前窗口长度+=1
           最大长度=当前窗口长度
         else:
           # 左边窗口右移动
           窗口左边下标+=1
           # 移除字典
           当前存在字符字典[一个字符]=None
           # 长度减1
           当前窗口长度-=1
       return 最大长度
    

  • 30. 串联所有单词的子串:给定一个字符串 s 和一些 长度相同 的单词 words 。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。

    注意子串要与 words 中的单词完全匹配,中间不能有其他字符 ,但不需要考虑 words 中单词串联的顺序。
    步骤一: 判断是整体移动类型,还是左右移动类型
    1. 该提意可知,整体移动类型(长度为words 中的单词)

    步骤二如何表示当前窗口状态
    1. 所有words的中长度
    2. 一个word的长度
    3. 当前word的所有单词,及单词重复出现的次数:Map
    步骤三有多少种临界状态,临界状态如何移动窗口
    1. 从0移动到目标字符串长度-所有words的中长度的范围,判断移动到index时,index到所有words的中长度 的字符是否满足,当前word的所有单词的Map
    2. 不满足则整体移动窗口,调整index的位置,知道满足为止
    编码






最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容