转载请注明作者和出处:https://blog.csdn.net/qq_28810395
运行平台: Windows 10
LeetCode官网:Fhttps://leetcode-cn.co

一、无重复字符的最长子串

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

1.示例 1:

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

2.示例 2:

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

3.示例 3:

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

4.示例 4:

输入: s = ""
输出: 0

5.提示:

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

二、解答思路

  移动滑窗,双指针移动,

  1. 用双指针维护一个滑动窗口去裁减字符串子串
  2. 建立一个哈希表来跟踪重复字符的最新位置
  3. 不断移动右指针,每当遇到一个重复字符char_str时,在确保左指针不往反方向移动时将其移到char_str的下一位
  4. 移动右指针的过程中,不断维护一个最大长度值并在程序末尾处返回

三、解答

class Solution:def lengthOfLongestSubstring(self, s: str) -> int:#如果空字符串输出0if len(s) <= 1:return len(s)#创建哈希表hashtable={}index_left=0   #创建左右指针  右指针直接循环maxlen=0  #用作记录最长长度for index_right in range(len(s)): char_str=s[index_right]       #依次读取当前字符# 如果当前字符之前重复过(重复位置为hashtable[char_str])if char_str in hashtable:# 在确保左指针不往反方向移动时将左指针移到重复位置 + 1if hashtable[char_str]+1 >= index_left:index_left=hashtable[char_str]+1# 更新当前字符最新重复位置为当前右指针位置hashtable[char_str]=index_right# 向右移动右指针,不断把最大长度保存maxlen=max(maxlen,(index_right-index_left+1))return maxlen

四、参考信息

[1]https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/kan-bu-dong-qing-da-si-wo-xi-lie-zhi-pyt-p0hm/

LeetCode每日一题——无重复字符的最长子串相关推荐

  1. LeetCode精讲 03无重复字符的最长子串(滑动窗口)

    题目描述 原创作者:bigsai,维护不易,如有收获,还请点赞.收藏支持! 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcb ...

  2. (LeetCode)Java 求解无重复字符的最长子串

    文章目录 一.题解 二.代码 三.总结 一.题解 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因 ...

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

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

  4. 【LeetCode 3-中等】无重复字符的最长子串(高清截图)

    3. [中等]无重复字符的最长子串 https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 给 ...

  5. 力扣第三题 无重复字符的最长子串

    有啥不懂的评论区可以问 ### 解题思路 双指针指向无重复字符的最长字串   而双指针构成的那部分可以看成一个滑动窗口  中间运用双for循环 外面for循环遍历整个字符串,内循环遍历整个滑动窗口   ...

  6. 【LeetCode笔记】3. 无重复字符的最长子串(JAVA、滑动窗口、字符串)

    文章目录 题目描述 思路 && 代码 1. 之前的版本 更新 2.0 题目描述 子串:各字符间必须要相邻,而非子序列 使用滑动窗口来做就行 思路 && 代码 1. 之前 ...

  7. 【Leetcode | 1】3. 无重复字符的最长子串

    这里我们可以建立一个HashMap,建立每个字符和其最后出现位置之间的映射,然后我们需要定义两个变量res和left,其中res用来记录最长无重复子串的长度,left指向该无重复子串左边的起始位置的前 ...

  8. leetcode算法题--无重复字符的最长子串

    题目地址: https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ https://leetc ...

  9. LeetCode刷题——无重复字符的最长子串

    目录 一.题目描述 二.题解 三.源码 一.题目描述 二.题解 三.源码 class Solution(object):def lengthOfLongestSubstring(self, s):&q ...

  10. 【每日一算法】无重复字符的最长子串

    微信改版,加星标不迷路! 每日一算法 - 无重复字符的最长子串 思路答案 首先定义一个指针p指向该字符串的链头,然后通过p指针后的第i个字符是否和p指针后的第j个字符相同来取得最大长度.(也叫做完全遍 ...

最新文章

  1. Truncate 删除数据
  2. 计算机CAI应用实例,运用CAI课件辅助实验的实例分析
  3. mysql忘记root密码解决方法(版本mysql-8.0.12)
  4. GDALWarp设置GDALWarpOptions::dfWarpMemoryLimit过大时处理失败
  5. delete archivelog all 无法彻底删除归档日志?
  6. wkwebview html5页面,iOS使用WKWebView加载HTML5不显示屏幕宽度的问题解决
  7. java 删除二进制内容_从二进制矩阵中仅删除一个元素的行/列
  8. php aes 128位加密,php实现AES 128位加密的相关操作技巧分享
  9. C语言学习及应用笔记之六:C语言extern关键字及其使用
  10. GenseeSDK 使用Kotlin要注意TODOAndroid Studio关闭TODO
  11. 修改IntelliJ IDEA包层级结构显示方式
  12. c语言自己编译自己,TCC研究(一): Tiny C Compiler最小的C语言编译器,自己编译自己...
  13. Ansible Tower - 使用入门 4 - 用 Workflow 执行模板
  14. Angualr8 ViewChild报错
  15. 华为顶尖应届生最高年薪超 200 万;抖音服务器宕机;GitLab 12.1 发布 | 极客头条...
  16. pytorch 测试每一类_2D UNet++ VGGBlock脑胶质瘤分割BraTs + Pytorch实现
  17. no required module provides package github.com/gorilla/mux
  18. LINUX开机自启问题
  19. 将python打包成.so文件
  20. 重庆大学数模美赛预选——城市救护车模型

热门文章

  1. Linux内核学习之路_1_编译Linux内核
  2. 这是一位拿到BAT大厂offer应届生的年终总结,那么你的呢?...
  3. 将url参数转为json对象
  4. JavaScript获取地址栏中的链接参数
  5. Oracle数据库to_date()和to_char()的相关
  6. 从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。...
  7. tomcat中 JVM 内存溢出及合理配置
  8. 腾讯惹谁了?为什么用QQ邮箱投简历不受人待见
  9. gcc -nostartfiles; -nodefaultlibs; -nostdlib;-f...
  10. java线程wait和notify详解