【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表达式。

目录
相关文章
|
5月前
|
存储 算法 Java
LeetCode 无重复字符的最长子串 打败100%的人
LeetCode 无重复字符的最长子串 打败100%的人
63 0
|
8月前
|
索引
LeetCode3-无重复字符的最长子串
LeetCode3-无重复字符的最长子串
|
3月前
|
存储 算法 Go
LeetCode 第三题: 无重复字符的最长子串
  给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
|
4月前
leetcode:3. 无重复字符的最长子串
leetcode:3. 无重复字符的最长子串
16 0
|
4月前
leetcode-3:无重复字符的最长子串
leetcode-3:无重复字符的最长子串
20 0
|
4月前
|
存储 算法 JavaScript
Leetcode算法系列| 3. 无重复字符的最长子串
Leetcode算法系列| 3. 无重复字符的最长子串
|
11月前
|
存储 前端开发 C++
力扣3-无重复字符的最长子串
力扣3-无重复字符的最长子串
52 0
|
11月前
|
索引
Leecode 3. 无重复字符的最长子串
Leecode 3. 无重复字符的最长子串
39 0
|
11月前
|
算法 Java Python
leetcode:3.无重复字符的最长子串
首先最容易想到的就是暴力解法,列出所有的子字符串,然后逐个检查是否包含重复的字符就行了,这样思路很简单,但是效率太慢,不推荐。
37 0
|
12月前
|
算法 前端开发 JavaScript
[LeetCode] 无重复字符的最长子串 & 最长回文子串
博主最近在看新的工作机会,也是在找一些leetcode上比较高频的算法复习一下,这里分享两道算法题的解题。
53 2
[LeetCode] 无重复字符的最长子串 & 最长回文子串

热门文章

最新文章