leetcode 3 无重复字符的最长子串

server/2024/12/22 6:35:13/

leetcode 3 无重复字符的最长子串

  • 正文
  • 普通解法
  • 双指针

正文

在这里插入图片描述

普通解法

重点观察示例 3。本题重点是创建一个动态区间,然后判断位于这个动态区间之外的字符是否被包含在这个动态区间范围内。并且对于 s 长度小于 1 的情况要重点进行讨论。

class Solution:def lengthOfLongestSubstring(self, s: str) -> int:length = len(s)maximum = 1if length <= 1:return lengthelse:for i in range(length):for j in range(i + 1, length):if s[j] not in  s[i:j]:if (j + 1 - i) > maximum:maximum = j + 1 - i# else:#     continueelse:breakreturn maximum

如上述代码所示,很容易理解,如果字符串 s 的长度小于等于 1。那么则进行循环,我们使用两个变量进行循环,用来创建一个动态区域,然后判断位于这个动态区域之后的字符是否包含在这个动态区域之内,如果包含,就中断,如果不包含,就把这个字符加入动态区域中,接着判断 (j + 1 - i) 的值与 maximum 值的大小,记录更大的值,循环结束后返回 maximum 就可以得到无重复字符的最长子串的长度。

双指针

class Solution:def lengthOfLongestSubstring(self, s: str) -> int:dict1, res, i = {}, 0, -1for j in range(len(s)):if s[j] in dict1:i = max(dict1[s[j]], i)dict1[s[j]] = jres = max(res, j - i)return res

上述解法比较抽象,首先设置双指针,用 i 表示左指针,j 表示右指针。然后遍历字符串。如果字符位于字典内,则更新左侧指针指向位置。如果字符不在字典内,则用字符作为字典的键值记录当前右侧指针所指向的位置,并且记录 右侧指针位置-左侧指针位置 和 res 中的较大值。这样就可以获取到无重复字符串的最长子串长度。

如果大家觉得有用,就请点个赞吧~


http://www.ppmy.cn/server/104910.html

相关文章

【React原理 - 任务调度和时间分片详解】

概述 在React15的时候&#xff0c;React使用的是从根节点往下递归的方式同步创建虚拟Dom&#xff0c;由于递归具有同步不可中断的特性&#xff0c;所以当执行长任务时(通常以60帧为标准&#xff0c;即16.6ms)就会长时间占用主线程长时间无响应&#xff0c;导致页面卡顿&#x…

.Net 6 WebApi项目中使用Log4Net详解

众所周知as we know&#xff0c; log4Net是一个很方便的日志输出工具&#xff0c;但是&#xff0c;每次使用&#xff0c;日志都没有顺利输出过.....各种不知名问题.......所以就记录一下&#xff0c;方便下次使用。 具体的与原理和基础在此不做赘述&#xff0c;咱直接上干货&a…

PHP在现代Web开发中的高效应用与实战案例

在快速迭代的Web开发领域&#xff0c;PHP作为一种成熟且广泛使用的服务器端脚本语言&#xff0c;始终占据着举足轻重的地位。从简单的动态网页到复杂的企业级应用&#xff0c;PHP凭借其强大的功能、丰富的扩展库以及良好的社区支持&#xff0c;成为了众多开发者的首选。本文将深…

下载bison操作步骤

bison官网链接 bison-3.8.2官网源代码下载链接 选择下载版本

2024 实训室建设:1+X 老年生活照护实训室

摘要&#xff1a;本文探讨了 2024 年 1X 老年生活照护实训室的建设意义、设计理念、功能布局以及对老年照护人才培养的积极作用&#xff0c;旨在为提升老年生活照护水平提供有力的实践教学支持。 随着我国老龄化进程的加速&#xff0c;对高质量老年生活照护的需求日益增长。202…

小白学习c++P10【2065】整数的和(c++)详细讲解

目录 EXTRA## PT1-知识点引入&#x1f929; PT2-首次接触程序&#x1f4a6; PT3-知识点讲解&#x1f36e; PT4-有没有其他方法&#xff1f;&#x1f62f; PT5-课后小结&#x1f606; EXTRA## &#xff08;此专栏为连续剧形式&#xff0c;如出现看不懂等情况请回顾之前的文…

C语言--不可不学的指针

1. 指针是什么 内存是什么&#xff1f; 内存是电脑上特别重要的存储器&#xff0c;计算机中的程序的运行都是在内存中进行的&#xff0c;为了有效使用内存&#xff0c;我们会把内存划分为一个个小的内存单元&#xff0c;比如把4G/8G/16G/32G的内存划分为一个个以字节为单位的空…

ant design pro 的表分层级如何处理

ant design pro 如何去保存颜色ant design pro v6 如何做好角色管理ant design 的 tree 如何作为角色中的权限选择之一ant design 的 tree 如何作为角色中的权限选择之二ant design pro access.ts 是如何控制多角色的权限的ant design pro 中用户的表单如何控制多个角色ant des…