Leetcode 3-最长无重复子串

S7-1200 PLC PID功能 | 调节PID参数 阅读详情

题目:

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequence and not a substring.

分析:

也就是找不含重复字母的子串的最大长度。可以用滑动窗口的思想,每个窗口有一个start位置,窗口长度可以随着遍历增长;按顺序一个个字母移动,如果第i个字母已经在从start到i的子串中出现了,那么可以计算从start--> i-1位置的长度,如果足够大,即保存为最新的maxlength;并且窗口要向下滑动,以第i个字母在子串中出现过的位置的下一个作为新的start;如果遍历的是没出现过的字母,计算当前子串的长度,检查是否要更新maxlength


举个例子,abac ,一开始start设为0,maxlength设为0,开始遍历,第一个到'a',从没有出现过,当前子串长度为1,更新'a'上次出现的位置为索引0;i=1时遍历到‘b’,也没出现过,子串现在长度为2;i=2时字母‘a’,上次出现的位置是0处,在当前判断的子串范围内(0-2),所以start要变成1(滑动窗口向下滑动,过滤掉开始的字母'a');继续i=3,此时计算从start位置开始的子串长度为3


那么怎么快速查看当前字母是否在当前滑动窗口所含子串里呢?可以用map<char,int>,记录字母char上次出现的位置,然后与start比较,是否是在当前考虑的子串中


代码:

 int lengthOfLongestSubstring(string s) {
     map<char,int>mapp;
     int length = s.length();
     int start = 0;int maxlen = 0;
     for(char i = 'a';i<='z';i++)mapp[i]=-1;//初始化,只初始化小写字母也过了,可能是样例不含大写字母
     for(int i = 0;i<length;i++)
     {
         if(mapp[s[i]]>=start)//当前遍历到的字母在现在考虑的子串中出现过了
         {

             start = mapp[s[i]]+1;//start设为出现过的那一字母的下一位置,也就是过掉重复字母
             mapp[s[i]]=i;//记录该字母出现的位置为下一次所用
         }
         else{//没出现过
                mapp[s[i]]=i;//记录出现的位置
                int t = i-start+1;//记录目前从start位置开始的子串长度
            maxlen = (maxlen<t)?t:maxlen;
         }
     }
     return maxlen;
    }

几个样例:

abcabcbb

abcabc

a

ab

aab

tmmzuxt

YOLOv8 | 损失函数改进,最新提出的Shape-IoU,有效涨点 作为检测器定位分支的重要组成,边框回归损失在目标检测任务中发挥巨大作用。现有的边框回归方法,通常考虑了GT框与预测框之间的几何关系,通过使用边框间的相对位置与相对形状等计算损失,而忽略了边框其自身的形状与尺度等固有属性对边框回归的影响。为了弥补现有研究的不足,本文提出聚焦边框自身形状与尺度的边框回归方法。首先我们对边框回归特性进行分析,得出边框自身形状因素与尺度因素会对回归结果产生影响。 阅读详情

相关推荐

使用gsplat进行3D高斯泼溅的方案

gsplat 不是一个软件,而是一个深度优化CUDA的开源Python库。它的作者是 Nerfstudio 团队,这个团队最出名的项目是 Nerfstudio,是对 NeRFs 方法支持最好的一套框架。据其所述,出于对新一代技术的好奇,他们构建了 gsplat 这个库。它支持 Windows/Linux 两个系统,使用前必须准备好 Nvidia 显卡。跑这个项目真是特别费劲,官方的文档支持不够完善,以至于遇到问题,开发者们都只能在issue区里抱团取暖。

兴趣使然的创作者 2105

最大不重复子串长度

题目 Given a string, find the length of the longest substring without repeating characters. Examples: Given “abcabcbb”, the answer is “abc”, which the length is 3. Given “bbbbb”, the answer

lzf的博客 1074

物联网 Mixly-智能楼道灯

一、实验目的及要求 熟悉声音及人体红外传感器用法。 二、实验原理与内容 1.使用声音传感器实现声控灯功能。 2.使用人体红外传感器实现人体检测控制灯功能。 三、实验软硬件环境 硬件:Arduino、LED灯、声音传感器、人体红外传感器 软件:Mixly IDE 四、实验过程(实验步骤、记录、数据、分析) 核心代码截图 声控灯: 人体红外检测灯: 3.实验效果图: (1)、声控灯总线连接: (1)、声控灯声音大于一某个值时灯亮,经过2秒后灯灭: (3)、人体红外检测灯连接总线: (4)、人体红外

qq_43430810的博客 1917

leetcode3-最长无重复子串

最长子串长度

weixin_44789333的博客 1397

基于IC动态加权的机器学习多因子选股策略:从模型融合到实战回测

在量化投资领域,多因子选股模型通过挖掘市场数据中的有效信号来预测股票收益。其核心原理在于利用统计学与机器学习算法,从海量因子中识别出与未来收益具有稳定相关性的特征。这一技术的核心价值在于将主观投资决策转化为系统化、可重复的客观过程,从而在控制风险的前提下追求超额收益。其典型应用场景包括股票阿尔法策略构建、Smart Beta产品设计以及资产配置中的股票筛选环节。本文聚焦于如何通过信息系数(IC)这一关键指标,动态融合Ridge回归、MLP神经网络和随机森林等多个预测模型,构建一个能够自适应市场风格轮动的选股

weixin_34216614的博客 451

【2024年华为秋招-12月25日-第三题(300分)- PCB印刷电路板布线】(题目+思路+Java&C++&Python解析+在线测试)

在PCB印刷电路板设计中,器件之间的连线需要避免线路的阻抗值增大、而且赛件之间还有别的器件和别的干扰源,在布线时我们希望受到的干扰尽量小。现将电路板简化成一个M×N的矩阵,每个位置(单元格)的值表示其源干扰度。如果单元格的值为0,表示此位置没有干扰源;如果单元格的值为非0,则表示此位置是干扰源,其值为源干扰度。连线经过干扰源或干扰源附近会增加连线的总干扰度。位置Axy的干扰源的源干扰度为dd01、若连线经过位置Axy,则其总干扰度会增加d;2、若连线经过离位置A。

m0_73659489的博客 344

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

LeetCode 3最长无重复字符的子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 input 1: Input: "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3. input 2: Input: "bbbbb" Output: 1 Explanation: The answer is "b", with the length of 1. input 3: Input: "pw

qq_38801813的博客 171

Darknet-Yolov3 移植过程

本教程面向使用寒武纪平台进行深度学习推理任务的开发者。针对当前主流检测网络darknet-yolov3,进行寒武纪平台的移植。开发者对照移植过程,能够利用寒武纪智能处理器设备完成多种场景的目标检测任务。本实验代码基于 Neuware 1.6.1 与 Python 2.7 环境。

shengyin714959的博客 438

【LeetCode 3】最长无重复子串

最长无重复子串 思路:滑动窗口 【难点1】滑动窗口的起始和结束位置  窗口的起始位置为第一个重复元素的下一个位置,结束位置为第二个重复元素的下一个位置。 例如:“abcdbm”,第一次遍历,滑动窗口的位置为i=0, j=0,接下来,j不断循环寻找重复元素,最终停止在j=4的位置上;则下一次滑动窗口的位置为i=2, j=5。   这样做的原理在于,包括第一个重复元素的字符串长度不能再增加,于是需要去掉第一个重复元素;而又已知在第一个和第二个重复元素之间,不存在重复元素,因此滑动窗口的结束位置在第二个重复元素之

若砚的博客 275

SSE 传输过程中,丢失空格和回车符,怎么解决?

Server - Sent Events(SSE)即服务器发送事件,是 HTML5 中的一项 Web API,用于实现服务器向客户端浏览器推送实时数据的功能。

934

OpenClaw使用ClawHub安装skill网络不稳定?Rate limit exceeded报错?试试这个国内高速镜像工具!

使用 ClawHub 安装 Skill 时遇到 🌐 网络不稳、❌ Rate limit 或命令不可用?使用这个镜像工具,轻松解决skill安装问题,⚡

XiaoqiangClub的博客 1260

leetcode 3 : Longest Substring Without Repeating Characters 最长无重复子串 (C# 语言版)

leetcode第三题,自己的算法,不知道复杂度怎样,希望能与网友交流。

hellowangxyue的专栏 1158

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

小白水平理解面试经典题目LeetCode 3 Longest Substring Without Repeating Characters(最长无重复字符的子串)

作为leetcode第三道题,类型是典型的String类型,都可以让我们联想到Two pointer, 暴力解法,就让我们看看这道题如何解答更好。

心安成长的码字书房 543

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【leetCode】leetCode3 找出最长无重复子串

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

随手积累,典型bug解决。技术栈的系统介绍。 164

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

leetcode 3最长无重复子串

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

qq_45403860的博客 125

LeetCode OJ-3.Longest Substring Without Repeating Characters(最长无重复子串)

LeetCode OJ-3.Longest Substring Without Repeating Characters(最长无重复子串)题目描述 3. Longest Substring Without Repeating Characters Add to List QuestionEditorial Solution My Submissions

oYinGui1 572

最长无重复字符子串leetcode第3题

使用两个指针表示窗口的起始(left)和结束(rigth)位置。窗口内的字符始终不重复。:用哈希表或数组保存每个字符最后一次出现的位置。当遇到重复字符时,移动窗口起始位置到重复字符的下一位,确保窗口内无重复。:每次移动结束指针时,计算当前窗口长度并更新最大值。

qq_58349936的博客 255

力扣LeetCode第3题无重复字符的最长子串

力扣LeetCode第3题无重复字符的最长子串

weixin_44061444的博客 444

最长无重复子串。力扣第3题(js解法,滑窗+哈希)

【代码】最长无重复子串。力扣第3题(js解法,滑窗+哈希)

qq_40819426的博客 244

面试经典150题[031]:最长无重复字符子串(LeetCode 3)

贪心思路 我们使用滑动窗口 + 哈希表优化: * **left**:窗口左边界,初始为0。 * **char_to_index**:哈希表记录每个字符最后出现的索引。 * **max_len**:记录最大长度。 * 遍历右指针 **right**: * 如果 s[right] 已出现且其最后索引 >= left,说明重复在当前窗口内:更新 left = char_to_index[s[right]] + 1。 * 更新 char_to_index[s[right]] = right。 * 更新 max

YoungHong1992 512

LeetCode 3 最长无重复公共子串长度

问题描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度 问题分析 简单的思路是,依次以每一个数组元素啊a[i]做为起始字符的最大无重复公共子串的长度: 从 j = i + 1 开始,看a[j]字符在i到j - 1之间有没有出现过: 如果出现了说明找到了以a[i]起始的最长公共子串,得到当前长度 如果没有,则看a[j]的下一个元素 遍历结束就可以得到最大的字串长度 public int lengthOfLongestSubstring(String s) { if(s

wuqiq1的博客 312

LeetCode3:求最长无重复子串

https://leetcode.com/problems/longest-substring-without-repeating-characters/ 问题描述: Given a string, find the length of the longest substring without repeating characters. Example 1: Input: "abcab...

一面之媛 127

Leetcode 3 最长无重复子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。 pu

MARK19960120的博客 218

leetcode3 最长无重复子串

package leetcode3; import java.util.*; /** * 那个网站的编译期有点小问题 拿着我的代码可以去自己的编译期运行 * 描述: *给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 * 输入: "abcabcbb" 输出: 3 abc * 输入: "bbbbb" 输出: 1 b * 输入: "pwwkew" 输出: 3 ...

赵智任的博客 162

Leetcode算法——3、最长无重复子串问题

题目 Given a string, find the length of the longest substring without repeating characters. 给定一个字符串,找到最长的不包含重复字符的子字符串的长度。 示例: Given “abcabcbb”, the answer is “abc”, which the length is 3. Given “bb...

HappyRocking的专栏 578

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

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 思路:基于Map的滑动窗口 非常能处理“dvdf”, 当dv进入Map, 再进d时,移除窗口前面的d,变成 vd,这样就能更新成vdf。非常高效。 class Solution { public int ...

weixin_39137699的博客 147
上一篇: NLTK学习
下一篇: Leetcode: 5 Longest Palindromic Substring 最长回文子串
BeforeEasy
博客等级 码龄10年 92粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值