无重复的最长子串经验值:1600
题目描述 Description
输入一个字符串s,请你找到s中的一个无重复字符的最长子串b,输出它的长度。
输入描述 Input Description
一行,一个字符串s
输出描述 Output Description
一行,一个整数,表示s无重复字符出现的最长子串的长度
样例输入 Sample Input
【样例输入1】 aaaabbcdeeeefffdwdd 【样例输入2】 abcda
样例输出 Sample Output
【样例输出1】 4 【样例输出2】 4
数据范围及提示 Data Size & Hint
字符串长度不超过1,000,000,字符串中字符的ASCII码值不超过128。
#include<iostream>
using namespace std;
int cnt=1,maxn;
int b[205];
int main(){
string s;
getline(cin,s);
for(int i=0;i<s.size();i++){
for(int j=i;j<s.size();j++){
for(int l=0;l<=200;l++){
b[l]=0;
}
int f=1;
for(int l=i;l<=j;l++){
if(b[int(s[l])]){
f=0;
break;
}
b[int(s[l])]=1;
}
if(f){
maxn=max(maxn,j-i+1);
}
}
}
cout<<maxn;
return 0;
}
TLE0分代码
以前写过AC的,现在忘了,唉
丁博扬在2021-09-09 17:24:02追加了内容
@张皓轩 你这个代码好像不对吧
丁博扬在2021-09-09 17:24:07追加了内容
@张皓轩 你这个代码好像不对吧
丁博扬在2021-09-09 17:25:50追加了内容
呐,你看看
丁博扬在2021-09-09 17:27:42追加了内容
顶


中级光能
不有讲义吗,真不行看回放
但...
核心:
getline(cin,a);
while(true){
while(b[a[r]]==0 && r<=a.size()){
b[a[r]]=1;
r++;
}
if(r>a.size()){
break;
}
ans=max(ans,r-l);
b[a[l]]=0;
l++;
}
cout<<ans;
return 0;
定义:
string a;
int b[129],ans,l,r;