1 条题解
-
0
#include<iostream> #include<climits> #include<cstring> using namespace std; int arr[1000010],cnt[2010],l,r; int ans,ansl,ansr,sum; void solve(){ memset(cnt,0,sizeof(cnt)); ans=INT_MAX; l=r=ansl=ansr=1; sum=0; string s; cin>>s; int n=s.size(),m=3; for(int i=1;i<=n;i++){ arr[i]=s[i-1]-'0'; } while(l<=r&&r<=n+1){ if(sum<m){ r++; cnt[arr[r-1]]++; if(cnt[arr[r-1]]==1){ sum++; } }else{ if(ans>r-l){ ans=r-l; ansl=l; ansr=r-1; } cnt[arr[l]]--; if(cnt[arr[l]]==0){ sum--; } l++; } } cout<<(ans>=INT_MAX/2 ? 0 : ans)<<"\n"; return ; } int main(){ int t; cin>>t; while(t--){ solve(); } }
- 1
信息
- ID
- 7276
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 8
- 已通过
- 4
- 上传者