题解 | #最长无重复子数组#
最长无重复子数组
http://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4
设置一个变量pStart用于存储无重复字符串的开始下标。设置一个变量max_length用于存储遍历过程中的最大长度。
遍历列表,查看第i各元素是否存在于子列表 pStart到第i-1个元素中。 如果不存在继续判断下一个元素。如果存在则对比子列表长度和max_length。如果子列表长度大于max_length,则重新赋值max_length。 于此同时,将pStart设置为字串中出现重复的元素的下一位下标。
同时注意处理遍历到最后一位时的情况。
def maxLength(self, arr):
max_length = 0
pStart = 0
for i, val in enumerate(arr):
if i == 0:
continue
if val not in arr[pStart:i]:
continue
else:
length = i - pStart
max_length = max_length if max_length > length else length
pStart = pStart + arr[pStart:i].index(val) + 1
length = i - pStart + 1
max_length = max_length if max_length > length else length
return max_length