最长不重复子串

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

题目描述:求最长不重复子串,如abcdefgegcsgcasse,最长不重复子串为abcdefg,长度为7


#include <iostream>
#include <list>
using namespace std;

//思路:用一个数组保存字符出现的次数。用i和j进行遍历整个字符串。
//当某个字符没有出现过,次数+1;出现字符已经出现过,次数+1,找到这个字符前面出现的位置的下一个位置,设为i
//并将之前的那些字符次数都-1。继续遍历,直到'\0'
int find(char str[],char *output)
{
	int i=0,j=0;
	int cnt[26]={0};
	int res=0,temp=0;
	char *out=output;
	int final;
	while(str[j]!='\0')
	{
		if(cnt[str[j]-'a']==0)
		{
			cnt[str[j]-'a']++;

		}
		else
		{
			cnt[str[j]-'a']++;
			while(str[i]!=str[j])
			{	
				cnt[str[i]-'a']--;
				i++;
			}
			cnt[str[i]-'a']--;
			i++;
		}	

		j++;
		temp=j-i;
		if(temp>res)
		{
			res=temp;
			final=i;
		}
	}
	//结果保存在output里面
	for(i=0;i<res;i++)
		*out++=str[final++];
	*out='\0';
	return res;
}
int main()
{
	char a[]="abcdefg";
	char b[100];
	int max=find(a,b);
	cout<<b<<endl;
	cout<<max<<endl;
}


大厂高频面试系列02--最长重复子问题(LeetCode) 大厂高频面试系列02--最长重复子问题 题目描述: 给定一个字符,找出含有重复字符的最长的长度。 举例: 给定"abcabcbb",没有重复字符的最长是"abc",那么长度就是3。 给定"bbbbb",最长的子就是"b",长度是1。 给定"pwwkew",最长是"wke",长度是3。请注意答案必须是一个子,"pwke"是子序列而是子。 题目难度:★★★ 题目分析: 要解决最长重复子的问题,首先我们应当知道如何找到含有重复字符的... 阅读详情

相关推荐

【无重复字符的最长--三种方法】

大家好,今天我们来讨论一下LeetCode上关于数组方面的一个题目:无重复字符的最长。题目难,方法很多。熊猫希望通过这一道简单的题目来使大家了解到同的解题方法。LeetCode03以上就是今天讲解的无重复字符的全部内容,题目难,也难讲。过这些解题方法却很重要。的支持。

m0_熊猫馆主的博客 1万+

无重复字符的最长

无重复字符的最长

weixin_42029738的博客 1万+

[字符]最长重复子

题目描述:    最长重复子(Longest No Repeat String,LNRS)就是从一个字符中找到一个连续子,该子中任何两个字符都能相同,且该子的长度是最大的。 分析: 解法一:动态规划   动态规划就是用来解决这种最优化问题,关于字符的很多有趣的问题如最长公共自序列,最长上升子序列等都可以用动态规划来解,这道题我的第一想法也是动态规划。   动态规划的核心在...

weixin_30897233的博客 1715

算法无重复字符的最长

无重复字符的子是指在一个字符中,没有任何字符重复出现的连续子序列。例如,在字符 “abcabcbb” 中,最长的无重复字符子是 “abc”,长度为3。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 2148

最长重复子及其C++实现

文章目录题目描述思路讲解C++实现 题目描述 输入一行字符,求里面含有重复字符的最长。 比如输入字符为aaabbacccc,可以从任意位置开始截取子字符, 这些子字符中,含有重复字符的最长子字符是bac,它的长度是3。 思路讲解 最长重复子是指该子含有任何重复的元素,且为所有子最长的一个。如字母表a-z就是一个重复的,为找到满足这样条件的字符,我们应设定两个位置以计算长度,开始位置和结束位置: 初始情况,开始位置为0,并遍历字符 遍历到的字符若没有出现过,则为结

Jeaten 4320

最长重复子最长重复子 思路

题目: 求任意一个字符中的所有最长重复字和所有最长重复子 最长重复子的解法:        设置一个辅助数据结构(如map)记录每个字符最后一次出现的位置;遍历字符中的每个字符,如果在map中没有出现,则重复子的长度+1,并更新最大字符的长度值; 如果在map中已经出现过,则更新当前字符在map中的位置和当前重复子的长度,并根据更新的长度来更新最大字符的长度;这样就可

philonpang的专栏 4363

『面试题』最长重复子

『题目』:  最长重复子就是从一个字符中找到一个连续子,该子中任何两个字符都能相同,且该子的长度是最大的。 输入:输入包含多个测试用例,每组测试用例输入一行由小写英文字符a、b、c、…x、y、z组成的字符,字符长度大于10000。 输出:对于每组测试用例,输出最大长度的重复字符。 样例: 输入 输出 absd 4 abba 2 abdffd 4 ...

Gavinjou大笨象的博客 6805

最长重复子

问题描述:给定一个字符,找出这个字符最长重复子。比如对于字符“sadus”,那么返回的结果应该是“sadu”或者“adus”(返回一个即可);对于字符“acbba”,返回的应是“acb”。       对于这样一个问题,想必大家首先想到利用的数据结构是HashMap,利用HashMap来保证子重复。但是我们可以想想能用HashMap呢?答案显然是可以的,因为字符数是固定...

zcw4237256的博客 353

LeetCode(3)——最长重复子

题目内容 描述 给定一个字符,找出含有重复字符的最长的长度。 示例: 给定 “abcabcbb” ,没有重复字符的最长是 “abc” ,那么长度就是3。 给定 “bbbbb” ,最长的子就是 “b” ,长度是1。 给定 “pwwkew” ,最长是 “wke” ,长度是3。请注意答案必须是一个子,”pwke” 是 子序列 而是子。 思路 1——...

Andy的博客 2万+

最长重复子最长重复子求解

  最长重复子最长重复子求解 本文内容框架: §1 最长重复子 基本方法、KMP算法求解、后缀数组求解 §2 最长重复子 基本方法、动态规划、动态规划+Hash §3 小结   §1最长重复子   1.1问题描述   首先这是一个...

qiudesuo的专栏 1315

寻找最长重复子

寻找最长重复子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

冯了个杰的博客 455

最长重复子:要求得到一个字符最长重复子的长度 LNRS(Longest no repeating substring)

最长重复子 题目传送门:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/ 很好理解,即求一个最长重复子。 package Findwork; import java.util.HashMap; import java.util.HashSet; ...

qq_28619473的博客 598

[子问题]最长重复子

LeetCode(3)最长重复子的实现

hallyz的博客 418

【双指针】最长重复子

本题通过滑动窗口算法高效解决了最长重复子问题。使用哈希集合快速判断重复动态调整窗口边界实时更新最大长度该算法思路清晰,实现简洁,是处理类似子问题的经典方法。

hongjianMa的博客 1176

算法题目总结 -- 最长重复子

解题思路 遇到重复首先要想到用set来解决问题 遇到字符或者数组类的问题首先想在复杂度下能否解决问题,即在一次遍历序列的过程中,解决问题 针对最长重复子的思路 在一次遍历中,维护一个set集合,代表字符S中S[0…i]中最长重复子中的元素种类,变量start为当前重复子的起始索引,变量end为当前重复子的结束索引,变量res表示S[0…i]中最长重复子的长度。...

weixin_43857365的博客 468
上一篇: 反转一个句子
下一篇: 数字串前第一小比它小的数
漠漠兔八哥
博客等级 码龄19年 42粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值