请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

示例 1:

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

示例 2:

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

示例 3:

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

提示:

  • s.length <= 40000

Python 解答:

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        adic = dict()
        left, right = 0, 0
        max_value = 0
        while right < len(s):
            if s[right] in s[left:right]:
                index = adic[s[right]]
                left = index + 1
            if right-left+1 > max_value:
                max_value = right-left+1
            adic[s[right]] = right
            right += 1
        return max_value
最后修改日期: 2021年4月12日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。