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

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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。