题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5578
题目:
Problem Description
N
frogs from different countries are standing in a line. Each country is represented by a lowercase letter. The distance between adjacent frogs (e.g. the
1st
and the
2nd
frog, the
N−1th
and the
Nth
frog, etc) are exactly
1
. Two frogs are friends if they come from the same country.
The closest friends are a pair of friends with the minimum distance. Help us find that distance.
The closest friends are a pair of friends with the minimum distance. Help us find that distance.
Input
First line contains an integer
T
, which indicates the number of test cases.
Every test case only contains a string with length N , and the ith character of the string indicates the country of ith frogs.
⋅ 1≤T≤50 .
⋅ for 80% data, 1≤N≤100 .
⋅ for 100% data, 1≤N≤1000 .
⋅ the string only contains lowercase letters.
Every test case only contains a string with length N , and the ith character of the string indicates the country of ith frogs.
⋅ 1≤T≤50 .
⋅ for 80% data, 1≤N≤100 .
⋅ for 100% data, 1≤N≤1000 .
⋅ the string only contains lowercase letters.
Output
For every test case, you should output "
Case #x: y", where
x
indicates the case number and counts from
1
and
y
is the result. If there are no frogs in same country, output
−1
instead.
Sample Input
2 abcecba abc
Sample Output
Case #1: 2 Case #2: -1
map乱搞一下就好。
#include <iostream>
#include<bits/stdc++.h>
#define INF 0x7fffffff
using namespace std;
char s[1100];
int main()
{
int T;
cin>>T;
for(int k=1;k<=T;k++)
{
scanf("%s",s);
int n=strlen(s);
map<char,int>mp;
int ans=INF;
for(int i=0;i<n;i++)
{
if(mp[s[i]])
ans=min(i+1-mp[s[i]],ans);
mp[s[i]]=i+1;
}
printf("Case #%d: %d\n",k,ans==INF?-1:ans);
}
}