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

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

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

题目描述

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

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

示例 2:

输入: “bbbbb” 输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。

示例 3:

输入: “pwwkew” 输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。

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

C++

  • map<char,int>记录最近一次访问到该字符的位置
  • left标记某字符在子串中的最近一次出现位置
  • maxlen标记全局最长子串的长度,i-left+1表示当前字符最近一次出现的后一个位置,到当前位置的距离
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        if(s.empty()) return 0;
        map<char,int>m;
        //left表示子串的起始位置,maxlen记录最大长度
        int left=0,maxlen=0;
        //i表示子串结束位置
        for(int i=0;i<s.size();i++){
            left=max(left,m[s[i]]); //更新该字符在子串中的起始位置,为最近一次出现位置
            maxlen=max(maxlen,i-left+1);
            m[s[i]] = i+1; //更新这个字符出现的最近位置,位置为下标+1
        }
        return maxlen;
    }
};

Python

  • 和C++一样的思路,因为字典的初始化方式可能不同,所以对每个字符,要先判断它是不是在字典中,否则mmap[char]是空的
class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        maxlen = 0
        left = 0
        mmap = {}
        for i, char in enumerate(s):
            if char in mmap:
                left = max(left, mmap[char])
            maxlen = max(maxlen, i-left+1)
            mmap[char] = i + 1
        
        return maxlen
        
LeetCode 3. 无重复字符的最长子串 以上解法全面涵盖了 LeetCode 3 的不同解法(滑动窗口最优),列举了数组/哈希优化的技巧,以及变体问题的常见解法和模板。掌握这些方法,遇到类似问题时可以轻松快速解决! 阅读详情

相关推荐

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

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

ayang818 's blog 721

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

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

热爱C++和golang的学生 1130

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

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

qq_59708493的博客 847

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+

珍惜 8875

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

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

明朗晨光的专栏 909

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

本文核心:滑动窗口!

忍者算法的博客 1208

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

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

迪迦 • 奥特曼 479

Matlab/simulink频率响应分析方法

Matlab/Simulink仿真系列问题一.电气模块与信号模块 一.电气模块与信号模块

virtuoso~晓晓 3万+

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

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

suwuzs的博客 301

2024东南大学533复试C++程序设计笔试真题精讲

【东南553复试C++】2024东南大学533复试C++程序设计笔试真题精讲

转遍世界 3415

手把手讲解RTX5操作系统在GD32F407上的移植

然后将GD32F4xx_Demo_Suites_V2.6.4\GD32407V_START_Demo_Suites\Projects\01_GPIO_Running_LED下面的main函数复制到我们的项目文件夹中;打开对应GD32407V_START_Demo_Suites的文件夹下面的Utilities,复制gd32f407v_start.c和gd32f407v_start.h文件到一开始项目保存的文件夹下面;为了验证我们的操作系统是否被正确添加,是否能够正确运行,我们需要添加示例文件;

Praguejing的博客 1863

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

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

赵亮的优快云博客 1232

团队管理中最棘手的6个问题

研发团队的管理棘手问题,大多集中在。

xiaolyuh的专栏 747

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

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

qq_44972915的博客 227

嵌入式统一消息机制:模块解耦与零拷贝通信设计

在嵌入式系统开发中,模块间通信(IMC)是影响可维护性与实时性的关键环节。传统IPC方式如全局变量、信号量或Socket易导致高耦合、调试困难及跨平台适配成本高。统一消息机制通过逻辑地址抽象、标签/实体分离、路由表驱动等原理,实现控制流与数据流解耦,在裸机、RTOS及Linux用户态保持一致接口。其技术价值在于降低模块依赖复杂度、支持动态增删与分布式迁移,并通过零拷贝优化显著减少CPU与内存开销。典型应用场景涵盖工业网关、城域交换机、多核ARM边缘设备等资源受限环境,尤其适用于需长期稳定运行、快速迭代与混合

weixin_35257663的博客 274

mtk-drm初始化

mtk-drm初始化走读

zhexingsunba的博客 4933

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

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

weixin_43847940的博客 461

道路缺陷检测实战指南:基于YOLOv11的深度学习系统从搭建到落地

道路缺陷检测项目的每一步,都是“理论→实践→反思→优化”的成长循环。当你看到自己开发的系统能精准识别出道路上的每一处裂缝、每一个坑洼时,那种“技术解决真实问题”的成就感,会让你明白深度学习不止是论文里的公式,更是改变行业的工具。如果过程中遇到模型不收敛、界面功能异常等问题,不妨把问题拆解成“数据是否标注准确?”“模型参数是否合理?”“界面逻辑是否有漏洞?”等小问题逐一排查。记住,每解决一个问题,你就离“能独立落地AI项目的工程师”更近一步。

LXY_LOVE36的博客 172

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

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

qq_30163473的博客 137

Unity零基础到入门 ☀️| 近万字教程 对 Unity 中的 动画系统基础 全面解析+实战演练,你确定要错过吗?

Unity动画系统,Animation,Animator。 本文对Unity中的动画系统基础做了一个全面解析,还包括实战演练。近万字教程让你对Unity的动画系统有一个系统的了解,敬请品尝!

努力前行,总会成为自己心中的那道光 9万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

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

s_Shune 247

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

题目来源 leetcode 题目描述 题目解析 暴力法 通过两个for循环,算出每个字符开头的不含有重复字符的 最长子串 的长度。 class Solution { public int lengthOfLongestSubstring(String s) { int ans = 0; for (int i = 0; i < s.length(); i++) { List<Character> list = new Arra

OceanStar的博客 624

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

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

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

riemann_的博客 692

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

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

weixin_45497382的博客 269

Leetcode3无重复字符的最长子串,纯c

Leetcode3无重复字符的最长子串 动态规划 dp[i]=dp[i-1]+1;i字符未出现过或是前一个相同字符的距离超过了以前一个字符为结尾的字符串的长度 dp[i]=i-a[t];与其哪一个相同字符的距离较近 #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxn 200 int lengthOfLongestSubstring(char * s){ int t,index=

weixin_44671209的博客 141

【LeetCode #3 题解】 无重复字符的最长子串

【LeetCode #3 题解】 无重复字符的最长子串一、题目二、题解:双指针暴力查找法 8ms 5.4M三、惊呆:双指针暴力查找法 优化后 4 ms ? 假的3.1 优化点1:指针赋值初始化,优化0.2M 内存四、hash 表实现 一、题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字

|~~~热爱生活、努力学习的小伙汁~~~| 1382
上一篇: 2.两数相加
下一篇: 5.最长回文子串
ChenyutingZJU
博客等级 码龄10年 18粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值