思路:hash计数法
#include <iostream> #include <cstring> #include <unordered_map> using namespace std; const int INF = 2e9; int main() { int t; cin >> t; while(t--){ int n; string s; cin >> n >> s; if(s.size() == 2 && s[0] != s[1]){ cout << -1 << endl; continue; } s = s + s; unordered_map<char,int> pos; int ans = INF; for(int i = 0;i < s.size();i++){ if(pos.find(s[i]) != pos.end()){ ans = min(ans,i - pos[s[i]] - 1); } pos[s[i]] = i; } if(ans == n - 1){ cout << -1 << endl; }else{ cout << ans << endl; } } }