384. 最长无重复字符的子串

384. 最长无重复字符的子串

中文English

给定一个字符串,请找出其中无重复字符的最长子字符串。

样例

样例 1:

输入: "abcabcbb"
输出: 3
解释: 最长子串是 "abc".

样例 2:

输入: "bbbbb"
输出: 1
解释: 最长子串是 "b".

挑战

O(n) 时间复杂度 

输入测试数据 (每行一个参数)如何理解测试数据?

 

class Solution:
    """
    @param s: a string
    @return: an integer
    """
    """
    大致思路:
    1.循环,如果符合条件,则j += 1,增大区间,否则i += 1,缩小区间
    """
    def lengthOfLongestSubstring(self, s):
        # write your code here
        #同向型双指针
        l = len(s)
        array = []
        min_value = 0
        j = 0

        for i in range(l):
            while j < l and s[j] not in array:
                array.append(s[j])
                j += 1
            
            min_value = max(min_value, j - i)
            #缩小区间
            array = array[1: ]
        
        return min_value 

 

posted @ 2020-06-25 21:02  风不再来  阅读(116)  评论(0编辑  收藏  举报