问题标题: 酷町堂:4523 无重复的最长子串

0
0
已解决
丁博扬
丁博扬
中级天翼
中级天翼

无重复的最长子串经验值: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追加了内容


0
已采纳
被禁言 张皓轩
张皓轩
中级光能
中级光能

不有讲义吗,真不行看回放

但...

核心:
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;

 

0
汪宇航
汪宇航
新手启示者
新手启示者
#include <    >
using namespace std;
int b[    ];
int len;
int main(){
         s;
    cin>>   ;
    len=    ;
    s=   +s;
    int l=,r=,ans=;
    while(    ){
        while(b[s[r]]==0){
            b[s[r]]++;
            r++;
        }
        if(    )break;
        ans=max(ans,r-l);
        b[s[l]]--;
        l++;
    }
    cout<<   ;
    return 0;
}
空白自己猜吧

 

我要回答