b题差一个数据点过。。。
有无佬看看错哪里了
#include<iostream> #include<map> #include<algorithm> using namespace std; typedef pair<int,int> PII; const int N=1e5+100; char s[N]; int main() { int t; cin>>t; int n; while(t--) { // mp.clear(); map<char,PII>mp; scanf("%d",&n); for(int i=1;i<=n;i++) cin>>s[i]; int dis=1e8; for(int i=1;i<=n;i++) { if(mp[s[i]].first==0) { mp[s[i]].first=i; } if(i!=mp[s[i]].first) { dis=min(dis,i-mp[s[i]].first-1); dis=min(dis,n-i+mp[s[i]].first-1); } if(mp[i].second!=0) { dis=min(dis,i-mp[s[i]].second-1); dis=min(dis,n-i+mp[s[i]].second-1); } mp[s[i]].second=i; } if(n==2) cout<<"-1"<<endl; else { if(dis==1e8) cout<<"-1"<<endl; else cout<<dis<<endl; } } return 0; }