题目描述
给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度。
代码
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
# 思路一:滑动窗口
# 初始化最大长度记录
max_length = 0
# 初始化起始位置
start_index = 0
# 用于存储当前窗口内的字符
char_set = set()
# 遍历字符串,end_index作为窗口的右边界
for end_index in range(len(s)):
# 如果字符重复,缩小窗口的左边界,直到没有重复字符
while s[end_index] in char_set:
char_set.remove(s[start_index]) # 移除最左边的字符
start_index += 1 # 移动左边界
# 将当前字符加入集合
char_set.add(s[end_index])
# 更新最大长度
max_length = max(max_length, len(char_set))
return max_length
# # 思路二:暴力解法
# # 初始化最大长度记录
# max_length = 0
# # 遍历字符串的每一个起始位置