51nod 1127 最短的包含字符串

来源:互联网 发布:linux traceroute没有 编辑:程序博客网 时间:2024/05/21 10:05
#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;elselef=mid+1;}printf("%d\n",lef);}}

0 0
原创粉丝点击