LeetCode 第三题--无重复字符的最长子串

时间:2022-10-26 19:35:23

1. 题目

2.题目分析与思路

3.思路

1. 题目

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

2. 思路

  从文中我们可以知道,最长的无重复字符,我们因该很自然的想到用字典,但是字典是无序的,所以我们必须稍微改变那么一点点。所以我的思路便是维护两个列表list1和result。 list1是动态的,表示的是当前最大的无重复的数组,如果我们判断下一个字符temp不在list1 中,那么我们就将其加入到list1中,否则的话,我们就要更新我们的list1.

  如何更新呢,首先我们先找到list1中与temp相同的位置,我们将list1 变为temp到最后一位,同时将temp加入到list中。例如

$$list1=[1,2,3,4],temp = 3$$,那么list1就更新为$[4,3]$,通过这种手段,我们就发现list1 永远都是最优的结果。但是,这时一个问题就来了,list可能会变小,因此我们需要存储最长的list1 到result里面,整体思路就是这个样子。

3. 代码

思路有了代码就很快出来了,这里我要说的是就是我们在改变list1的时候,一定要把temp加上,不然我们就会少一个字母。

def lengthOfLongestSubstring(s):
length = len(s)
#我们要维护的就是list1 与result
list1 = []
result = []
for i in range(length):
if s[i] not in list1:#如果temp不在list1中
list1.append(s[i])
if len(result) < len(list1):
#如果list1 长度小于result,则不改变result
result = list1
else: #修改list1
list1 = list1[list1.index(s[i])+1:]
list1.append(s[i])return len(result)

接下来的一章我就会将这种类似的题目全部做完,主要使用的是这个方法的扩展,划窗法去解决类似的问题。

30. 串联所有单词的子串

76. 最小覆盖子串

159. 至多包含两个不同字符的最长子串

209. 长度最小的子数组

239. 滑动窗口最大值

567. 字符串的排列

632. 最小区间

727. 最小窗口子序列

LeetCode 第三题--无重复字符的最长子串的更多相关文章

  1. Leetcode(3)无重复字符的最长子串

    Leetcode(3)无重复字符的最长子串 [题目表述]: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 第一种方法:暴力 执行用时:996 ms: 内存消耗:12.9MB 效果: ...

  2. leetcode刷题第三天&lt&semi;无重复字符的最长子串&gt&semi;

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 : 输入: "abcabcbb" 输出: 解释: 因为无重复字符的最长子串是 . 示例 : 输入: &quo ...

  3. LeetCode刷题--无重复字符的最长子串(中等)

    题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 " ...

  4. 【LeetCode题解】3&lowbar;无重复字符的最长子串(Longest-Substring-Without-Repeating-Characters)

    目录 描述 解法一:暴力枚举法(Time Limit Exceeded) 思路 Java 实现 Python 实现 复杂度分析 解法二:滑动窗口(双指针) 思路 Java 实现 Python 实现 复 ...

  5. Leetcode(3)-无重复字符的最长子串

    给定一个字符串,找出不含有重复字符的最长子串的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3. 给定 &q ...

  6. Leetcode&lpar;三&rpar;无重复字符的最长子串

    3. 无重复字符的最长子串 题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最 ...

  7. LeetCode 第 3 题:无重复字符的最长子串(滑动窗口)

    LeetCode 第 3 题:无重复字符的最长子串 (滑动窗口) 方法:滑动窗口 滑动窗口模板问题:右指针先走,满足了一定条件以后,左指针向前走,直到不满足条件. 特点:左右指针的方向是一致的,并且是 ...

  8. leetcode刷题笔记-3&period; 无重复字符的最长子串(java实现)

    题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "ab ...

  9. leetcode 刷题(3)--- 无重复字符的最长子串

    给定一个字符串,找出不含有重复字符的最长子串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 ...

随机推荐

  1. KVM的前世今生

    1.虚拟化技术的演变过程:软件模拟.虚拟化层翻译.容器虚拟化三个阶段 (1)软件模拟的技术方式 软件模拟是通过软件完全模拟CPU.网卡.芯片组.磁盘等计算机硬件,因为是软件模拟,所以理论上可以模拟任何 ...

  2. OracleSugar ORM框架的诞生,代码开源

    经过四天的努力终于将SqlSugar ORM 成功支持ORACLE数据库 优点: 1.高性能,达到原生最高水准,比SqlHelper性能要高,比Dapper快30% 比EF快50% 2.支持多种数据库 ...

  3. JavaScript单元测试框架JsUnit基本介绍和使用

    JavaScript单元测试框架JsUnit基本介绍和使用 XUnit framework XUnit是一套标准化的独立于语言的概念和结构集合,用于编写和运行单元测试(Unit tests). 每一个 ...

  4. C&num;插件构架实战 &plus; Visual C&num;插件构架实战补遗(转)

    C#插件构架实战 C# 插件构架实战 Jack H Hansen [ 2004-07-27 ] Keywords C# 插件 反射(System.Reflection) 属性(System.Attri ...

  5. shiny server SparkR web展示界面(一)

    1. shiny server简介 shiny-server是一种可用把R 语言以web形式展示的服务,下面就讲讲如何在自己的服务器上构建Shiny Server.下一篇主要介绍如何集成sparkR后 ...

  6. https SSL主流数字证书都有哪些格式?

    主流数字证书都有哪些格式? 一般来说,主流的Web服务软件,通常都基于两种基础密码库:OpenSSL和Java. Tomcat.Weblogic.JBoss等,使用Java提供的密码库.通过Java的 ...

  7. HTML Hyperlink between and within pages

    In HTML, we can use tag <a href=""> to create hyperlinks between and within pages. T ...

  8. wget https&colon;&sol;&sol;github&period;com&sol;xxx&sol;yyy&sol;archive&sol;&dollar;&lbrace;commit&lowbar;hash&rcub;&period;zip

    wget https://github.com/xxx/yyy/archive/${commit_hash}.zip

  9. java android ExecutorService 线程池解析

    ExecutorService: 它也是一个接口,它扩展自Executor接口,Executor接口更像一个抽象的命令模式,仅有一个方法:execute(runnable);Executor接口简单, ...

  10. C&plus;&plus;函数后面加const修饰

    声明一个成员函数的时候用const关键字是用来说明这个函数是 "只读(read-only)"函数,也就是说明这个函数不会修改任何数据成员(object). 为了声明一个const成 ...