最长的无重复字符串python
def longstr(s):
"""
最长的无重复字符串
:param s:
:return:
"""
max_len = 0
if s is None or len(s) == 0:
return 0
result = dict()
one_max = 0
start = 0
for i in range(len(s)):
if s[i] in result and result[s[i]] >= start:
start = result[s[i]] + 1
one_max = i - start + 1
result[s[i]]=i
max_len = max(max_len, one_max)
print(max_len)
动态规划,先判断传入的字符串长度是否为空来直接返回最长长度0
然后定义一个字典来存储不重复的字符和下标
判断当前字符是否在字典中和当前字符的下标是否大于等于最近重复字符的所在位置
比较此次循环的最大不重复子串长度和历史循环最大不重复子串长度