题解 | #最长无重复子数组#

最长无重复子数组

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
全部评论

相关推荐

给🐭🐭个面试机会...:我擦seed✌🏻
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务