题目链接:
题目:
分析:
环形字符串问题.题目的意思找到相同两个字母中间隔最少的个数.对于环形字符串,我们可以知道答案一定是小于字符串长度的一半的,因为如果答案大于字符串的一半,我们完全可以从另一头来找.所以我们可以直接暴力枚举答案表示间隔,然后比较字符串的位置是否相同来确定答案.
code:
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
void solve() {
int n;
cin >> n;
string s;
cin >> s;
for(int i = 1; i <= n / 2; i++) {//找环形字符串中 相同字母出现的最小间隔 一定小于长度的一半
for(int j = 0; j < n; j++) {
if(s[j] == s[(j + i) % n]) {
cout << i - 1 << endl;
return;
}
}
}
cout << -1 << endl;
}
signed main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int T;
cin >> T;
while( T-- ) solve();
return 0;
}