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.dream-exception.com/article/arithmetic.leetcode._3_LengthOfLongestSubstring
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

