#include <bits/stdc++.h>
using namespace std;
string str;
int sum[30][100100];
bool judge(int st,int ed)
{
for(int i=0;i<26;i++)
{
if(!(sum[i][ed]-(st==0?0:sum[i][st-1])))
return 0;
}
return 1;
}
int main()
{
int i,j,lef,rig,mid,flag;
while(cin>>str)
{
memset(sum,0,sizeof(sum));
sum[str[i]-'A'][0]++;
for(i=1;i<str.length();i++)
{
for(j=0;j<26;j++)
sum[j][i]=sum[j][i-1];
sum[str[i]-'A'][i]++;
}
if(!judge(0,str.length()-1))
{
printf("No Solution\n");
continue;
}
lef=26;rig=str.length();
while(lef<=rig)
{
mid=(lef+rig)>>1;
flag=0;
for(i=0;i<str.length()-mid;i++)
{
if(judge(i,i+mid-1))
{
flag=1;
break;
}
}
if(flag)
rig=mid-1;
else
lef=mid+1;
}
printf("%d\n",lef);
}
}
51nod 1127 最短的包含字符串
最新推荐文章于 2020-03-08 19:50:52 发布