找出字符串中出现重复而且长度最长的字符串,并且输出而且输出其长度

来源:互联网 发布:淘宝客服人工 编辑:程序博客网 时间:2024/06/11 18:43

下面是我写的函数,没有考虑运算的时间。

第一个是计算出字符串中出现的子字符串出现的次数,

int Compare(char *s,char *c){char *p=c;int n=0;int p1=strlen(c);int i=p1;while(true){if (*s==*c){s++;c++;i--;if (*c=='\0'){n++;c=p;}}else{s++;if (*s=='\0'){break;}c=p;}}return n;}

下面这个是是求最长的重复的子字符串

void MaxsubString(char *src){char *p;p1=src;p2=src;int t=0;char dest[256];int temp1=0,temp2=0,temp3=1;//temp1是子字符串出重复次数,temp2子字符串的长度,temp3记录子字符串的长度for(int i=strlen(src)-1;i>1;i--){for (int j=0;j<strlen(src);j++){if (j+i<=strlen(src)){memset(dest,NULL,sizeof(dest));if (j<=i){p1=src;for (t=j;t>0;p1++,t--);temp2=i-j;for (int k=0;k<=temp2;k++){dest[k]=*p1;p1++;}temp1=Compare(src,dest);if(temp1>1){if (temp2>=temp3){temp3=temp2;printf("%s,%d\n",dest,temp3+1);}}}}}}}


 

原创粉丝点击