使用两个指针来优化时间复杂度。
#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!')