leetcode3 无重复字符的最长子串 python

题目

给定一个字符串,找出不含有重复字符的最长子串的长度。

思路:

参考的官方答案3。
设一个滑动窗口[i, j]。和一个字典,键:字符,值:字符s[j]上一次出现位置。
j逐一增加;
i取两者最大值:max( 当前i,s[j] 在字典中的值加1);
最长无重复子串取j-i+1 的最大值;
同时更新字典中键s[j] 的值。

class Solution:
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        char2index = {}
        maxlen = 0
        i = 0
        for j in range(len(s)):
            if s[j] in char2index:
                i = max(char2index[s[j]] + 1, i)
            char2index[s[j]] = j
            maxlen = max(j - i + 1, maxlen)
        return maxlen

 

你可能感兴趣的:(leetcode3 无重复字符的最长子串 python)