c++ 数组的输入遇到特定字符停止输入_滑动窗口思维--挑战“无重复字符的最长子串”
文章来源: 饭饭的Python学习之路
作者: 一粒米饭
今天要挑战的是“无重复字符的最长子串”。
难度:中等
题目描述:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例1:
输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例2:
输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例3:
输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
题目原始链接
解题思路:
这道题的解题思路主要是利用滑动窗口思维。
什么是滑动窗口
滑动窗口作为双指针算法的一种特殊形式,在日常算法中尤其是字符串匹配查询中经常用到。
其基本思想是通过使用特定大小的子列表,在遍历完整列表的同时进行特定的操作,以达到降低了循环的嵌套深度。
滑动窗口的基本逻辑如下:
- 使用双指针中的左右指针技巧,初始化 left = right = 0,把索引闭区间 [left, right] 称为一个「窗口」。
- 先不断地增加 right 指针扩大窗口 [left, right],直到窗口符合要求
- 停止增加 right,转而不断增加 left 指针缩小窗口 [left, right],直到窗口中的字符串不再符合要求。同时,每次增加 left,我们都要更新一轮结果。
- 重复第 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: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最 ...
- 滑动窗口技术-最大无重复字符问题(暴力,滑动窗口,动态规划)
leetcode 第三题,最长无重复的字串 返回一个字符中最大无重复字符的长度 1.暴力求解 2.线性滑动左右指针 3.跳跃滑动左指针 暴力求解忽略 线性滑动左右指针: public int leng ...
- 滑动窗口:LeetCode 3 无重复字符的最长子串
力扣 思路:滑动窗口 窗口信息: 窗口中每个字符出现次数 用长度为128个长度的数组(ASCII码表示下标)记录字符出现次数,因为数组具有随机存储特性,所以查找的时间复杂度 ...
- 无重复字符最长字串的滑动窗口结合哈希表解法(注释详尽)
这个解法是由leetcode上的jack这名用户上传,巧妙的使用了哈希表来缩短执行时间,非常值得学习,但是原作者并没有将原理和亮点讲的很清楚,所以我重新将它梳理了一遍发了出来. 思路: 这个解法是以常 ...
- 快手校招算法题 无重复字符的最长子串
时间限制:5秒 空间限制:32768K 给定一个字符串,请找出其中长度最长且不含有重复字符的子串,计算该子串长度. 输入描述: 输入类型为字符串,例如"abcde" 输出描述: 输 ...
- 汇编语言求无符号数组中出现的次数最多数_【今日最佳leecode通俗易懂】无重复字符的最长子串...
相信看了这个标题的同学,对这道题以已经非常不陌生了,就是leecode当中的第三题,之所以要单独的写一写主要对我来说,里面涉及到有一个滑动窗口, 散列表, 字符编码等知识点比较重要,也有几个小技巧,这 ...
- python输入多个字符串、输入最长的一串_无重复字符的最长子串(Python之暴力求解)...
无重复字符的最长子串(Python之暴力求解) 例题: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: (1) 输入: "abcabcbb" 输出: 3 ...
- LeetCode.3-最长无重复字符子串(Longest Substring Without Repeating Characters)
这是悦乐书的第341次更新,第365篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第2题Longest Substring Without Repeating Cha ...
- 刻意练习:LeetCode实战 -- Task16. 无重复字符的最长子串
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...
最新文章
- java 时间戳 与时间的转换
- 计算机面试的时候写过的代码,程序员悲催瞬间:来之不易的美团面试,我尽然挂了(还原真实场景)...
- 【剑指 offer】(48)—— 不能被继承的类
- 2021-04-26
- jeesit的简单使用(四)
- 掘金15W沸点简单分析(一)
- 前后端利用accessToken与refreshToken无感刷新
- [填坑] 解决 Ubuntu ssh 登录自动休眠问题
- Node.js潮牌官网 毕业设计-附源码 010955
- 《剑破武林》用户注册协议
- 面试官:说一下公平锁和非公平锁的区别?
- 基于 OE、Yocto、Arago 构建 TI 板卡的定制文件系统
- 小学计算机水平测试论坛,热烈祝贺我校学生在市计算机水平测试中再创佳绩
- python-测试框架nose(nosetests)简介
- List集合去重方法
- 【方法篇·壹】css开发技巧-全局样式设置和局部样式
- torch中manual_seed的作用
- 文件底层I/O基本操作——东写西读南开北关中位移_莫韵乐的Linux英雄传
- 图文详解如何将书签bookmarks导回到chrome?
- [原创]我个人整理的AD/2000技巧,各位收藏吧!60多个。
热门文章
- 捋一捋js面向对象的继承问题
- c# automapper 使用
- WordPress Mail Subscribe List插件‘sml_name’参数HTML注入漏洞
- HttpContext(三)-Request
- IsNull 和 SQL语句中CASE WHEN用法
- JavaScript --- this
- vue项目代码改进(一)login组件
- WPF WebBrowser 加载 html ,出现安全警告, 运行 脚本和 activeX 控件,
- 伯纳德•罗森伯格先生参加华为技术2016首届国际光电连接技术研讨会
- mysql-5.5.50-winx64