美文网首页算法学习__Python
Python算法1:最长不含重复字符的子字符串(动态规划 / 哈

Python算法1:最长不含重复字符的子字符串(动态规划 / 哈

作者: Ugfly | 来源:发表于2022-06-14 21:10 被阅读0次
    class Solution:
        def get_length_by_longest_substring(self, s:str)-> int:
            res, tmp = 0, 0
            dic = {}
            # res: 存储最长长度
            # tmp: 当前窗口的长度
            # j: 当前遍历的字符的位置
            # i: 当前遍历的字符的上个位置, 默认没出现过就是-1
            # dic: 维护每个字符的最后出现的位置
    
            for j in range(len(s)):
                i = dic.get(s[j], -1)
                dic[s[j]] = j 
    
                if tmp < j - i: 
                    tmp += 1
                else:
                    tmp = j - i 
                res = max(res, tmp)         
            return res 
    
    s = "abcabcdbb"
    res = Solution().get_length_by_longest_substring(s)
    print(res) # 4
    

    时间复杂度:O(n)
    空间复杂度:O(1)

    相关文章

      网友评论

        本文标题:Python算法1:最长不含重复字符的子字符串(动态规划 / 哈

        本文链接:https://www.haomeiwen.com/subject/hpxtvrtx.html