(三)无重复字符的最长子串(Python3)

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

示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

res: 整型,用于返回,存储当前最长的子串长度。
start: 整型,用于保存当前子串的开始下标(index)
cache:字典,用于保存每个字母的最近下标(index)


class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        start, res, cache = 0, 0, {}
        for idx, c in enumerate(s):
            if c in cache and cache[c] >= start:
                start = cache[c] + 1
                cache[c] = idx
            else:
                cache[c] = idx
                cur = idx - start + 1
                res = max(res, cur)
        return  res

if __name__ == '__main__':
    s = Solution()
    print(s.lengthOfLongestSubstring("aabaab!bb"))
|| 版权声明
作者:废权
链接:https://blog.yjscloud.com/archives/123
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
THE END
分享
二维码
(三)无重复字符的最长子串(Python3)
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&q……
<<上一篇
下一篇>>
文章目录
关闭
目 录