美文网首页
3. 无重复字符的最长子串

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

作者: 御坂10241 | 来源:发表于2020-05-04 13:41 被阅读0次

    题目

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

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

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

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

    题解

    思路:通过start存储不重复字符串的开始位置,res存储长度,cache字典存储遇到的字符及其位置。

    1. 遍历字符串的字符与下标
    2. 判断是否在cache中见过该字符。进行处理
    3. 判断是否在cache中的该字符下标位置是否在start之后。进行处理
    4. 更新start,当前字符串以及res
    def lengthOfLongestSubstring(self, s: str) -> int:
            start, res, cache = 0, 0, dict()
            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
                    res = max(res, res-start+1)
            return res
    

    执行结果:通过
    显示详情
    执行用时 :60 ms, 在所有 Python3 提交中击败了94.19%的用户
    内存消耗 :13.7 MB, 在所有 Python3 提交中击败了5.88%的用户

    相关文章

      网友评论

          本文标题:3. 无重复字符的最长子串

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