首页 > 其他 > 详细

test

时间:2019-05-24 21:52:39      阅读:107      评论:0      收藏:0      [点我收藏+]

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

test

原文:https://www.cnblogs.com/vercont/p/10920122.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!