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

LeetCode 3 - 无重复字符的最长子串 - C++含代码 无重复字符的最长子串 - C++含代码 题目(LeetCode 3) 给定一个字符串,请找出其中不含有重复字符的 最长子串 的长度。 示例1 输入: “abcabcbb” 输出: 3 示例2 输入: “bbbbb” 输出: 1 示例3 输入: “pwwkew” 输出: 3 思路 由于题目要求我们查找不含有重复字符的子串中,长度最长的一个。一种直观的想法是,对字符串中所有可能的子串,都检查一遍其中是否含有重复字符,并维护其中符合要求子串的最大长度。这种算法的时间复杂度是O(n3)O(n^3)O(n3 阅读详情

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

示例 1:

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

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
示例 4:

输入: s = ""
输出: 0
 

提示:

0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成

分析:

    滑动窗口

class Solution {
private:
    int max(int a, int b){
        return a>b?a:b;
    }
public:
    int lengthOfLongestSubstring(string s) {
        // 滑动窗口,并且用一个数组来保存窗口中出现的字符
        // 注意这里赋初值要循环一遍
        int indexs[128] = {-1};   // 滑动窗口中这个字符出现在字符串的第几个位置
        for(int i=0; i<128; i++) indexs[i] = -1;
        if(s.length()<2)return s.length();
        int start = 0;
        indexs[s[start]] = start;
        int end = 1;
        int maxLength = 0;
        while(end < s.length()){
            // 大于-1说明end这个字符出现过
            if(indexs[s[end]] > -1){
                if(indexs[s[end]] >= start){
                    start = indexs[s[end]] + 1;
                }
            }
            // 没有出现过就加一
            indexs[s[end]] = end;
            end ++;
            maxLength = max(maxLength, end-start);
        }
        // maxLength = max(maxLength, end-start);
        return maxLength;
    }
};

LeetCode 3. 无重复字符的最长子串 以上解法全面涵盖了 LeetCode 3 的不同解法(滑动窗口最优),列举了数组/哈希优化的技巧,以及变体问题的常见解法和模板。掌握这些方法,遇到类似问题时可以轻松快速解决! 阅读详情

相关推荐

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

这是刚刚学到的算法——滑动窗口法Sliding Window, 题目如下 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入...

ayang818 's blog 721

3. 无重复字符的最长子串(LeetCode每日打卡)

题目描述: 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。(s由英文字母、数字、符号和空格组成) 示例1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是"wke",所以...

m0_51457307的博客 4501

LeetCode——3. 无重复字符的最长子串

目录题目1.链接2.题目描述3.解题思路4.题解 题目 1.链接 传送门–>3. 无重复字符的最长子串. 2.题目描述 3.解题思路 思路和算法 我们先用一个例子考虑如何在较优的时间复杂度内通过本题。 我们不妨以示例一中的字符串 abcabcbb 为例,找出从每一个字符开始的,不包含重复字符的最长子串,那么其中最长的那个字符串即为答案。对于示例一中的字符串,我们列举出这些结果,其中括号中表示选中的字符以及最长的字符串: 以 (a)bcabcbb 开始的最长字符串为 (abc)ab

qq_59708493的博客 847

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

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

lvhao123456789的博客 2070

【Leetcode】3. 无重复字符的最长子串

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

明朗晨光的专栏 908

【忍者算法】从一指禅到无重复字符:最长子串问题的优雅解法|LeetCode 3 无重复字符的最长子串

本文核心:滑动窗口!

忍者算法的博客 1208

[LeetCode] 3.无重复字符的最长子串

在每一步的操作中,我们会将左指针向右移动一格,表示 我们开始枚举下一个字符作为起始位置,然后我们可以不断地向右移动右指针,但需要保证这两个指针对应的子串中没有重复的字符。在移动结束后,这个子串就对应着 以左指针开始的,不包含重复字符的最长子串。我们不妨以示例一中的字符串 abcabcbb 为例,找出从每一个字符开始的,不包含重复字符的最长子串,那么其中最长的那个字符串即为答案。我们使用两个指针表示字符串中的某个子串(或窗口)的左右边界,其中左指针代表着上文中「枚举子串的起始位置」,而右指针即为上文中的。

淋曦的进击手记 527

从OFED到rdma-core:手把手带你搞定Linux下RDMA开发环境的选型与搭建

本文详细介绍了在Linux系统下搭建RDMA开发环境的完整流程,涵盖OFED与rdma-core的选型对比及分步安装指南。针对高性能计算和分布式存储需求,解析RDMA技术栈的核心组件,提供环境验证与性能测试方法,帮助开发者快速构建稳定高效的开发环境。特别适合需要优化网络性能的工程师参考。

weixin_26905487的博客 225

3.无重复字符的最长子串LeetCode(js)

题目:无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 解题思路:

m0_67430715的博客 1413

Fastwhisper + Pyannote 实现 ASR + 说话者识别

最近在研究ASR相关的业务,也是调研了不少模型,踩了不少坑,ASR这块,目前中文普通话效果最好的应该是阿里的modelscope上的中文模型了,英文的话,还是非whisper莫属了,而且whisper很变态,粤语效果也还不错,因此,如果实际业务中需要涉及到不同的语言,还是更推荐whisper多一点faster-whisper是使用CTranslate2对OpenAI的Whisper模型的重新实现,CTranslate2是一个用于Transformer模型的快速推理引擎。

qq_44193969的博客 1万+

EPICS pythonSoftIOC教程

EPICS pythonSoftIOC教程

yuyuyuliang00的博客 1521

LeetCode - 3. 无重复字符的最长子串

维护一个"窗口",这个窗口内的所有字符都是不重复的。当遇到重复字符时,调整窗口左边界,确保窗口内无重复字符。滑动窗口是处理子串/子数组问题的常用技巧,结合哈希表可以高效解决此问题。步骤6:右指针移动到第二个'c'步骤7:右指针移动到第三个'b'步骤4:右指针移动到第二个'a'步骤5:右指针移动到第二个'b'步骤8:右指针移动到第四个'b'最终结果:最大无重复子串长度为3。步骤1:右指针移动到'a'步骤2:右指针移动到'b'步骤3:右指针移动到'c'

2402_83315537的博客 549

第7篇-SAP MM模块-JIT应用实战解析,从计划协议到JIT供应的关键配置与流程

本文深入解析SAP MM模块中的JIT(Just In Time)供应模式,从计划协议到JIT供应的关键配置与流程。通过动态计划行管理、需求聚合与分解等核心功能,实现精确数量、时间和地点的物料供应。文章详细介绍了主数据准备、计划协议配置、MRP参数精调及EDI集成方案,并提供了实施中的典型问题与解决方案,助力企业优化供应链管理。

weixin_30363509的博客 947

leetcode3. 无重复字符的最长子串,哈希表

leetcode3.无重复字符的最长子串,哈希表

热爱C++和golang的学生 1129

智能车图像处理19-进阶篇11--斜入十字补线

这篇文章主要讲述智能车竞赛中如何对于斜入十字进行补线操作。

taiyuezyh的博客 7482

SpringBoot+Vue+kkFileView实现文档管理(文档上传、下载、在线预览)

上面在使用OpenOffice实现doc、excel、ppt等文档的管理和预览。除此之外可用kkFileView实现包括且更多文档的预览。

BADAO_LIUMANG_QIZHI的博客 1万+

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

Leetcode 3. 无重复字符的最长子串1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/   核心思路为: 处理s[i] 节点时,其需要比较的最大长度为dp[i-1],这样可以节省时间。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决   笔者以C+

珍惜 8874

城市仿真软件:AnyLogic_(8).行人与人群动态仿真

定义行人个体的行为和属性,如行走速度、目标位置等。// 创建一个行人// 设置行走速度为1.5 m/s// 设置目标位置为入口// 创建另一个行人// 设置行走速度为1.2 m/s// 设置目标位置为出口// 创建行人// 创建乘客行人与人群动态仿真在城市规划、交通管理和紧急疏散等领域具有广泛的应用。通过AnyLogic提供的行人模型模块,可以有效地模拟行人的个体行为、群体动态和与环境的交互。

kkchenjj的博客 1249

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

LetCode 2. 两数相加 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字0之外,这两个数都不会以0开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 题目解释: 由题目描述可得,此题为两数相加求和,但两个加

迪迦 • 奥特曼 479

Android 车载应用之快速入门

车载 Android 系统也被称为 Android Automotive OS,是对原始 Android 系统的一个功能扩充版本。与手机系统一样,Android Automotive OS 源代码完全开放,第三方供应商和汽车制造商可以官方源码的基础上自行开发和拓展,无论是编程语言还是各项接口,都与 Android 系统保持了一致。

xiangzhihong8的专栏 1110

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LeetCode3.无重复字符的最长子串

LeetCode3.无重复字符的最长子串 难度:中等 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 双指针 思路; 第一种情况,s只有一个元素或者空子串; 设置双指针left、right,一个指向最左端,一个指向下一个元素; right向右移动cnt记录不重复字串长度; right向右移动,直到right指向的元素在s[left:right]中存在,找到改元素在窗口中的位置,并将left指向该元素的下一个元素; 然后比较cnt 与 right - left的大小; 如果下一个元

suwuzs的博客 300

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

‘’’ leetcode-3 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出...

赵亮的优快云博客 1232

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

力扣:3. 无重复字符的最长子串

力扣:3. 无重复字符的最长子串 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释...

qq_44972915的博客 227

leetcode3. 无重复字符的最长子串

leetcode3. 无重复字符的最长子串 题目描述 链接: leetcode3. 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",

weixin_43847940的博客 461

LeetCode 3:无重复字符的最长子串

目录LeetCode 3:无重复字符的最长子串题目描述解题 LeetCode 3:无重复字符的最长子串 题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “

s_Shune 247

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

Leetcode 3 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释:...

qq_30163473的博客 137
上一篇: 2.两数相加
下一篇: C++使用switch动态获取函数(通过函数指针实现)
rdc01234
博客等级 码龄9年 10粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值