#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;}
转载于:https://www.cnblogs.com/vercont/p/10920122.html