test

#include<cstdio>
#include<cstring>
using namespace std;
char a[10000005];
int tmp[30],pd,s,ans=100,n,cha;
//tmp数组每次加到2就和前一个比对,然后回1,来回往复代替vector
int main()
{
    gets(a);
    n=strlen(a);
    for(int i=0;i<n;i++)
    {
        tmp[a[i]-'A']++;
        if(tmp[a[i]-'A']==2)
        {
            pd=1;
            for(int j=s;j<i;j++)
            {
                if(a[i]==a[j])
                {
                    cha=i-j;
                    if(cha<ans)//两个元素差的最小值
                    {
                        ans=cha;
                    }
                    s=j+1;//从下一个开始再次比对最小值
                    break;
                }
            }
            tmp[a[i]-'A']=1;
        }
    }
    if(pd==0)
    {
        printf("-1\n");
        return 0;
    }
    printf("%d\n",ans);
    return 0;
}

posted @ 2019-05-24 20:47  vercont  阅读(114)  评论(0编辑  收藏  举报