首页 > 试题广场 >

最长不含重复字符的子字符串。

[编程题]最长不含重复字符的子字符串。
  • 热度指数:451 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解


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

示例1

输入

"abcabcbb"

输出

3

说明

因为无重复字符的最长子串是"abc",所以其长度为 3
示例2

输入

"pwwkew"

输出

3

说明

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

输入

"ipalfish"

输出

7

说明

因为无重复字符的最长子串是"palfish",所以其长度为 7。
#

# @param s string字符串 
# @return int整型
#
from collections import defaultdict
class Solution:
    def lengthOfLongestSubstring(self , s ):
        # write code herekm 
        window = dict.fromkeys(s, 0)
        left = 0
        right = 0
        res = 0
        while right < len(s):
            c = s[right]
            right += 1
            window[c] += 1
            while window[c]>1:
                d = s[left]
                left += 1
                window[d] -= 1
            res = max(res, right-left)
        return res
发表于 2023-11-14 16:21:28 回复(0)

热门推荐

通过挑战的用户

最长不含重复字符的子字符串。