【leedcode】0003. 无重复字符最长子串

简介: 【leedcode】0003. 无重复字符最长子串

【leedcode】0003. 无重复字符最长子串


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


   示例 1:

   输入: "abcabcbb"

   输出: 3  

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

   示例 2:

   输入: "bbbbb"

   输出: 1

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

   示例 3:

   输入: "pwwkew"

   输出: 3

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


请注意,你的答案必须是 子串的长度,"wke" 是一个子序列,不是子串长度。


方法一:

def maxSizeSubstring(s):
    res,cur,dic = 0,0,{}
    for idx in range(len(s)):
        if s[idx] in dic:
            cur = max(cur, dic[s[idx]] + 1)
        dic[s[idx]] = idx
        res = max(res, idx - cur + 1)      
    return res
sample = "abcabcbb","bbbbb","pwwkew","I am HannYang."
for s in sample:
    print(maxSizeSubstring(s))



方法二:


f40bcc72102e460297ea937c81fe2d9a.gif

def maxSizeSubstring2(s):
    res = 0
    for i in range(len(s)):
        for j in range(len(s),0,-1):
            if i>=j: continue
            t = s[i:j]
            size = len(t)
            if size==len(set(t)):
                if size>res:
                    res = size
    return res
sample = "abcabcbb","bbbbb","pwwkew","I am HannYang."
for s in sample:
    print(maxSizeSubstring2(s))


以上三种方法的运行结果都是:

3

1

3

5

其中,方法三只是把方法二改造成了一行代码的lambda表达式。

目录
相关文章
|
6月前
|
存储 算法 Java
LeetCode 无重复字符的最长子串 打败100%的人
LeetCode 无重复字符的最长子串 打败100%的人
92 0
|
索引
LeetCode3-无重复字符的最长子串
LeetCode3-无重复字符的最长子串
|
1月前
|
存储 算法
Leetcode第三题(无重复字符的最长子串)
这篇文章介绍了解决LeetCode第三题“无重复字符的最长子串”的算法,使用滑动窗口技术来找出给定字符串中最长的不含重复字符的子串,并提供了详细的代码实现和解释。
57 0
Leetcode第三题(无重复字符的最长子串)
|
3月前
|
算法
LeetCode第3题无重复字符的最长子串
该文章介绍了 LeetCode 第 3 题无重复字符的最长子串的解法,通过使用 HashSet 记录不重复的子元素,以每个字符开头遍历字符串,遇到重复字符则重新计算,最终找到最长子串,同时提到可以考虑使用 HashMap 降低复杂度。
LeetCode第3题无重复字符的最长子串
|
5月前
|
存储 算法 数据挖掘
LeetCode 第三题:无重复字符的最长子串 详解 【3/1000】
LeetCode 第三题:无重复字符的最长子串 详解 【3/1000】
|
6月前
|
存储 算法 Go
LeetCode 第三题: 无重复字符的最长子串
  给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
|
6月前
leetcode-3:无重复字符的最长子串
leetcode-3:无重复字符的最长子串
35 0
|
6月前
leetcode:3. 无重复字符的最长子串
leetcode:3. 无重复字符的最长子串
34 0
|
6月前
|
存储 算法 JavaScript
Leetcode算法系列| 3. 无重复字符的最长子串
Leetcode算法系列| 3. 无重复字符的最长子串
|
索引
Leecode 3. 无重复字符的最长子串
Leecode 3. 无重复字符的最长子串
56 0