这类问题属于滑动窗口问题,定义一个窗口,窗口内为当前无重复元素数组,移动窗口右边界,当下一个元素 ‘x’ 在窗口内时,假设其位置为 'i',记录下此时窗口的长度以及窗口内的数组,滑动窗口左边界到‘i+1’。继续滑动窗口,直到窗口浏览完整个数组。
class Solution:
def FindMaxLenOfSubStr(self, arr):
no_repeat = []
long_num = 0
long_str = []
for v in arr:
if v not in no_repeat:
no_repeat.append(v)
else:
leng = len(no_repeat)
if leng > long_num:
long_num = leng
long_str = no_repeat[:]
index = no_repeat.index(v)
no_repeat.append(v)
no_repeat = no_repeat[index+1:]
return long_num,long_str