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;
}


查看14道真题和解析