• 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 ");
            return 0;
        }
        printf("%d ",ans);
        return 0;
    }

  • 相关阅读:
    安装MSSQL2008出现的问题记录
    制作安装包遇到的问题
    算法设计方法动态规划
    基础果然要牢记(一次失败的电面)
    搜狗垂搜笔试
    几种堆的时间复杂度分析
    正则表达式转NFA
    组合数学(1)
    算法设计方法贪心算法
    最短路径问题
  • 原文地址:https://www.cnblogs.com/vercont/p/10920122.html
Copyright © 2020-2023  润新知