LeetCode每日一题——无重复字符的最长子串
转载请注明作者和出处: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
由英文字母、数字、符号和空格组成
二、解答思路
移动滑窗,双指针移动,
- 用双指针维护一个滑动窗口去裁减字符串子串
- 建立一个哈希表来跟踪重复字符的最新位置
- 不断移动右指针,每当遇到一个重复字符
char_str
时,在确保左指针不往反方向移动时将其移到char_str
的下一位 - 移动右指针的过程中,不断维护一个最大长度值并在程序末尾处返回
三、解答
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每日一题——无重复字符的最长子串相关推荐
- LeetCode精讲 03无重复字符的最长子串(滑动窗口)
题目描述 原创作者:bigsai,维护不易,如有收获,还请点赞.收藏支持! 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcb ...
- (LeetCode)Java 求解无重复字符的最长子串
文章目录 一.题解 二.代码 三.总结 一.题解 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因 ...
- 快手校招算法题 无重复字符的最长子串
时间限制:5秒 空间限制:32768K 给定一个字符串,请找出其中长度最长且不含有重复字符的子串,计算该子串长度. 输入描述: 输入类型为字符串,例如"abcde" 输出描述: 输 ...
- 【LeetCode 3-中等】无重复字符的最长子串(高清截图)
3. [中等]无重复字符的最长子串 https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 给 ...
- 力扣第三题 无重复字符的最长子串
有啥不懂的评论区可以问 ### 解题思路 双指针指向无重复字符的最长字串 而双指针构成的那部分可以看成一个滑动窗口 中间运用双for循环 外面for循环遍历整个字符串,内循环遍历整个滑动窗口 ...
- 【LeetCode笔记】3. 无重复字符的最长子串(JAVA、滑动窗口、字符串)
文章目录 题目描述 思路 && 代码 1. 之前的版本 更新 2.0 题目描述 子串:各字符间必须要相邻,而非子序列 使用滑动窗口来做就行 思路 && 代码 1. 之前 ...
- 【Leetcode | 1】3. 无重复字符的最长子串
这里我们可以建立一个HashMap,建立每个字符和其最后出现位置之间的映射,然后我们需要定义两个变量res和left,其中res用来记录最长无重复子串的长度,left指向该无重复子串左边的起始位置的前 ...
- leetcode算法题--无重复字符的最长子串
题目地址: https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ https://leetc ...
- LeetCode刷题——无重复字符的最长子串
目录 一.题目描述 二.题解 三.源码 一.题目描述 二.题解 三.源码 class Solution(object):def lengthOfLongestSubstring(self, s):&q ...
- 【每日一算法】无重复字符的最长子串
微信改版,加星标不迷路! 每日一算法 - 无重复字符的最长子串 思路答案 首先定义一个指针p指向该字符串的链头,然后通过p指针后的第i个字符是否和p指针后的第j个字符相同来取得最大长度.(也叫做完全遍 ...
最新文章
- Truncate 删除数据
- 计算机CAI应用实例,运用CAI课件辅助实验的实例分析
- mysql忘记root密码解决方法(版本mysql-8.0.12)
- GDALWarp设置GDALWarpOptions::dfWarpMemoryLimit过大时处理失败
- delete archivelog all 无法彻底删除归档日志?
- wkwebview html5页面,iOS使用WKWebView加载HTML5不显示屏幕宽度的问题解决
- java 删除二进制内容_从二进制矩阵中仅删除一个元素的行/列
- php aes 128位加密,php实现AES 128位加密的相关操作技巧分享
- C语言学习及应用笔记之六:C语言extern关键字及其使用
- GenseeSDK 使用Kotlin要注意TODOAndroid Studio关闭TODO
- 修改IntelliJ IDEA包层级结构显示方式
- c语言自己编译自己,TCC研究(一): Tiny C Compiler最小的C语言编译器,自己编译自己...
- Ansible Tower - 使用入门 4 - 用 Workflow 执行模板
- Angualr8 ViewChild报错
- 华为顶尖应届生最高年薪超 200 万;抖音服务器宕机;GitLab 12.1 发布 | 极客头条...
- pytorch 测试每一类_2D UNet++ VGGBlock脑胶质瘤分割BraTs + Pytorch实现
- no required module provides package github.com/gorilla/mux
- LINUX开机自启问题
- 将python打包成.so文件
- 重庆大学数模美赛预选——城市救护车模型
热门文章
- Linux内核学习之路_1_编译Linux内核
- 这是一位拿到BAT大厂offer应届生的年终总结,那么你的呢?...
- 将url参数转为json对象
- JavaScript获取地址栏中的链接参数
- Oracle数据库to_date()和to_char()的相关
- 从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。...
- tomcat中 JVM 内存溢出及合理配置
- 腾讯惹谁了?为什么用QQ邮箱投简历不受人待见
- gcc -nostartfiles; -nodefaultlibs; -nostdlib;-f...
- java线程wait和notify详解