type
status
date
Oct 29, 2023 10:55 AM
slug
summary
tags
category
icon
password
Parent item
Sub-item
给定一个字符串s
,请你找出其中不含有重复字符的 最长子串 的长度。
方法一:暴力枚举
不忘初心,双循环,记录一下长度
方法二
ans
用于存储当前找到的最长不重复子字符串的长度
head
和tail
分别表示当前子字符串的起始和结束位置
buffer
用于记录每个字符是否在当前子字符串中出现过,128对应ASCII字符集的长度
遍历字符串
- 使用
tail
变量遍历字符串s
- 如果
s[tail]
字符在buffer
中未出现过,则将其标记为已出现,并将tail
向右移动一位
- 如果
s[tail]
字符在buffer
中已出现过,则计算当前子字符串的长度(tail - head
),并更新ans为较大的值 - 通过移动
head
,清空buffer
内head
到tail
之间出现过的字符标记,直到head
指向s[tail]
,并将head
指向s[tail]
的下一个位置
- 最后,再次检查并更新
ans
,确保包含最后一个字符的子字符串长度也被考虑在内
- 作者:琥珀
- 链接:https://www.liujianfar.life//article/arithmetic.leetcode._3_LengthOfLongestSubstring
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。