使用两个指针来优化时间复杂度。

#include<iostream>
#include<algorithm>
using namespace std;
int a[128];
int main(){
    int ss=0,ans;
    string s;
    cin>>s;
    ans=s.size();
    for(int i=0,j=0;i<s.size();i++){
        a[s[i]]++;
        if(a[s[i]]==1){
            ss++;
        }
        while(ss==26&&j<i){
            ans=min(ans,i-j+1);
            a[s[j]]--;
            if(a[s[j]]==0)
                ss--;
            j++;
        }
    }
    cout<<ans<<endl;
    return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int a[128];
int main(){
    int ss=0,ans;
    string s;
    cin>>s;
    ans=s.size();
    for(int i=0,j=0;i<s.size();i++){
        a[s[i]]++;
        if(a[s[i]]==1){
            ss++;
        }
        while(ss==26&&j<i){
            ans=min(ans,i-j+1);
            a[s[j]]--;
            if(a[s[j]]==0)
                ss--;
            j++;
        }
    }
    cout<<ans<<endl;
    return 0;
}

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    }
}
print('Hello world!')