[LeetCode] Longest Substring Without Repeating Characters

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

在后面发现重复的字符后,就把前面的重复字符及之前的全部去掉,像毛毛虫爬行一样,同时统计最大的子序列长度。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
    	if (s.size() < 2) {
    		return s.size();
    	}
    	
    	int length = 0;
    	for(int first = 0, last = 1; last < s.size(); ++last) {
    		string sub = s.substr(first, last - first);
    		string::size_type dup = sub.find(s[last]);
    		if (dup != string::npos ){
    			first += (dup + 1);
    		}
    		
    		int gap = last - first + 1;
    		length = (length >= gap ? length : gap);
    	}
    	return length;  
    }
};


【力扣Leetcode题解系列之0003. Longest Substring Without Repeating Characters 解题全析】 本文详细解析了力扣第3题“无重复字符的最长子串”的两种高效解法:滑动窗口法和一次遍历字典法。滑动窗口法通过双指针维护无重复字符区间,时间复杂度O(n);字典法记录字符位置实现单次遍历,同样O(n)复杂度。文章提供了Python、C++和Go三种语言的实现代码,并分析了算法的时间与空间复杂度。该题考察字符串处理与数据结构运用能力,是算法学习的经典范例。 阅读详情

相关推荐

读书笔记之编程之美 - 1.6 饮料供应(错误连篇)

<br />这道题目是目前为止这本书里最烂的一个。第一版的勘误表里就错误一堆,改正了以后还是一堆垃圾。不过话说回来,也不能求全责备,毕竟不是只有优秀的人才能进微软,偶尔也会混进几个菜鸟。<br />本节中的符号错乱就不说了,算法一的代码也有点问题,逻辑上有疏漏。第二层for循环的opt[i][j] = -INF应该写成opt[i][j] = opt[i-1][j],意思是容量大了以后,至少不会小于上一个容积的满意度。<br />为了方便,我的代码把-INF改成-1,代码清单如下:<br />#include

山高月小 2133

读书笔记之编程之美 - 2.14 求数组的子数组之和的最大值

第一次遇到这个题是在Autodesk的笔试题,由于笔试时间比较短,当时只写了个大概思路。 当时我的想法是正负数问题,先从前扫描,把数组的值都加起来,如果某时的sum为负数,则可以丢弃之前的数据,从新开始计算。另外还要从后面进行计算,遇到sum为负数也要进行数据截断。现在看这个解法有个问题,就是数组全为负数的时候,找不到答案,还要补充一步,寻找最大的那个负数。 再看书上的解法,直接看代码清单2-27,nStart = max(A[i], nStart + A[i]),这句的意思就是判断数组后面的结果是否可

山高月小 838

读书笔记之编程之美 - 1.17 俄罗斯方块游戏

<br />很经典的经典游戏,也是我最喜欢的游戏之一。下一步学习Windows编程后,一定要自己实现一个。<br />具体到这一节,首先是一个游戏的实现问题,另外还有一个人工智能的问题。<br />第一个问题很多VC++游戏编程的书上都有实现,今后参考一下。<br />第二个问题会被应用在外挂上,在QQ游戏中就经常遇到这样的外挂。除了书中给出的策略,还有比较重要的就是在底层保持各种接口,有平的,有阶梯的,但最不好的就是锯齿形的,那样很容易搞出“洞”来。

山高月小 1084

Leetcode 3 Longest Substring Without Repeating Characters

Leetcode 3 Longest Substring Without Repeating Characters Given a string, find the length of the longest substring without repeating characters. Example 1: Input: "abcabcbb" Output: 3 Explanation: Th...

博学 笃志 切问 近思 158

[LeetCode]——Longest Substring Without Repeating Characters

作为模式识别的图像狗,越发觉得毕业找工作还是得coding! 痛定思痛,入了leetcode的深坑! 在提交了无数次以后,Accepted终于向俺招手了~ 虽说复杂度高了点,但是作为一个学渣,能看到Accepted这辈子也值了!class Solution { public: int lengthOfLongestSubstring(string s) { str

vashzx的专栏 433

leetcode--3. Longest Substring Without Repeating Characters

尺取法 首先设置头尾两个指针,都指向头,然后尾指针开始遍历,在遍历过程中记录每个字母出现个数,每次遍历若当前字母没有出现过,则更新答案长度。若出现过,则将头指针移到重复字母的后面一位。然后继续重复上述操作。最后返回答案即可。 class Solution { public: int lengthOfLongestSubstring(string s) { if(s.le

林伏案的博客 438

闯关leetcode——3.Longest Substring Without Repeating Characters

leetcode第三题

方亮的专栏 1307

[LeetCode] 3. Longest Substring Without Repeating Characters 最长不重复子串

[LeetCode] 3. Longest Substring Without Repeating Characters Given a string, find the length of the longest substring without repeating characters. Example 1: Input: "abcabcbb" Output: 3 Expla...

weixin_30795127的博客 103

[LeetCode]3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)题解

leetcode中该题网址:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 ...

sultry_yi的博客 516

LeetCode题解 C++ Longest Substring Without Repeating Characters

LeetCode题解 Longest Substring Without Repeating Characters

Caffey 439

Leetcode第三题《Longest Substring Without Repeating Characters

Leetcode第三题《Longest Substring Without Repeating Characters》 题目: Given a string, find the length of the longest substring without repeating characters. For example, the lo...

weixin_30361641的博客 91

LeetcodeLongest Substring Without Repeating Characters

题目链接:https://leetcode.com/problems/longest-substring-without-repeating-characters/ 题目: Given a string, find the length of the longest substring without repeating characters. Examples: Give

业精于勤,荒于嬉 3182

Leetcode】3. Longest Substring Without Repeating Characters

题目地址: https://leetcode.com/problems/longest-substring-without-repeating-characters/ 题目大意是,给定一个字符串,求其中的一个子串不含重复字母,返回其长度。可以用双指针来做,用一个map保存快指针遍历到jjj的时候s[0,...,j]s[0,...,j]s[0,...,j]所有字母最后出现的位置,快指针从000向后遍......

数学、算法爱好者的博客 553

LeetCode力扣之Longest Substring Without Repeating Characters

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 l...

LeeWei 144

LeetCode -- Longest Substring Without Repeating Characters

题目描述:Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3.

我的英文站点:https://iorilan.medium.com/ 1759

LeetcodeLongest Substring Without Repeating Characters 问题

问题描述: 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 "bbbbb", the answer is "b", wit

漫漫学习路 303

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

这是悦乐书的第341次更新,第365篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第2题Longest Substring Without Repeating Characters(顺位题号是3)。给定一个字符串,找到最长无重复字符子字符串的长度。例如: 输入:“abcabcbb” 输出:3 说明:答案是“abc”,长度为3。 输入:“bbbbb” 输出:1 说...

小川的博客 205

leetcode Longest Substring Without Repeating Characters

var lengthOfLongestSubstring = function(s) { let curr = 0; let valuePos = new Map(); const len = s.length; if(len==0) { return 0; } for(let i=0,j=0;i&l...

weixin_42424269的博客 480

LeetCode Longest Substring Without Repeating Characters

原题链接在这里:https://leetcode.com/problems/longest-substring-without-repeating-characters/ String 题目,基本思路就是维护一个窗口[walker,runner]. walker,runner都是向右移,同时维护一个HashSet hs,用来存储这一段中的所有不同character。首先右侧窗口runner在前跑

Dylan_Java_NYC的博客 576
上一篇: [LeetCode] Median of Two Sorted Arrays
下一篇: [LeetCode] Add Two Numbers
Erorr
博客等级 码龄20年 90粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值