最长连续不重复子串
程序员文章站
2022-07-07 15:46:57
...
此问题就是寻找一个序列当中最长不重复的子串长度,我们利用双指针,维护一个子序列,保持其中数字不重复,我们将右指针每次向右边移动,就将标记+1,所以,如果右指针遇到重复数字,那么此处的标记就是2.所以,此时需要将做指针右移,将这个重复元素消去,也就是减1,那么这个while循环判断的条件就是右指针的值是否大于1,这个判断循环结束的时候,能够保持这个子串内部的数字都是不重复的
#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
int a[N],s[N];
int main(){
int n;
cin>>n;
int res=0;
for(int i=0;i<n;i++)cin>>a[i];
//i为右指针,j为左指针
for(int i=0,j=0;i<n;i++){
s[a[i]]++;
while(s[a[i]]>1){//如果发现这个元素在之前已经存在过了,就消除前面那个重复元素
s[a[j]]--;//消除前面那个重复的元素
j++; //j最后指向那个重复元素的后面一个,这样从i-j指间就没有重复的元素了
}
res=max(res,i-j+1);
}
cout<<res;
return 0;
}
上一篇: 美图秀秀怎么做扭曲字?
下一篇: 树状数组的简单介绍和C++实现
推荐阅读
-
Python查找最长不包含重复字符的子字符串算法示例
-
Python查找最长不包含重复字符的子字符串算法示例
-
Android笔试题:求字符串中的最长重复子串
-
Python实现针对给定字符串寻找最长非重复子串的方法
-
最长连续不重复子串
-
JS使用正则表达式找出最长连续子串长度
-
Python简单实现查找一个字符串中最长不重复子串的方法
-
字符串中找出连续最长的数字串:读入一个字符串str,输出字符串str中的连续最长的数字串;合法括号的判断:给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)
-
【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现
-
JS使用正则表达式找出最长连续子串长度