题目
题解
- 使用数组作为容器–直观的滑动窗口法
def lengthOfLongestSubstring(s: str) -> int:
# 字符串为空则返回零
if not s:
return 0
res = [] # 滑动窗口数组
max_length = 0 # 最长串长度
# 遍历字符串
for x in s:
# 如果字符不在滑动窗口中,则直接扩展窗口
if x not in res:
# 扩展窗口
res.append(x)
# 如果字符在滑动窗口中,则
# 1. 从窗口中移除重复字符及之前的字符串部分
# 2. 再扩展窗口
else:
# 从窗口中移除重复字符及之前的字符串部分,新字符串即为无重复字符的字符串
res[:] = res[res.index(x) + 1:]
# 扩展窗口
res.append(x)
# 更新最大长度
max_length = max(len(res), max_length)
return max_length