求一个字符串中连续出现次数最多的子串

来源:互联网 发布:淘宝兼职能赚到钱吗 编辑:程序博客网 时间:2024/06/06 16:54
#include <stdio.h>#include <string.h>int func(char *pstr, char *sstr);int count_func(char *p, char *s);int main(){    char *data0 = "aaaaaabcabc";    char data1[6];    int i;    i = func(data1,data0);/*  char *data1 = "bc";    int i;    i=count_func(data0,data1);    printf("%d\n",i);*/    printf("%s\n",data1);    printf("%d\n",i);    return 0;}int func(char *pstr, char *sstr){    int len = (int)strlen(sstr);    int count;    char tem[10];    int num0 = 0;    int num1 = 0;    char tempory[10];    int cur, i, p;    for(count = 1; count<=len/2; count++)//the length of string    {        for(cur = 0; cur+count<=len; cur++)        {            /***************************************************************************/               for(i=0; i<count; i++)//把要对比的字符串保存到tempory[]中            {                tempory[i] = sstr[cur+i];            }            tempory[i] = '\0';            num0 = count_func(sstr,tempory);//统计在字符串中字符串的个数            if(num0>num1)//如果大于原先的,则改变            {                num1 = num0;                strcpy(tem,tempory);                for(p=0;tem[p]!='\0';p++)                {                    pstr[p] = tem[p];                }                pstr[p] ='\0';            }        }    }    return num1;}int count_func(char *p, char *s)//统计字符串连续出现的次数{    int i, j;    int num0=0;    int num1=0;    int len = (int)strlen(s);    for(i=0; p[i]!='\0';)    {        for(j=0;s[j]!='\0';j++)        {            if(p[i+j]!=s[j])                break;        }        if(s[j]=='\0')        {               num0++;            i=i+len;            if(p[i] == '\0')                if(num0>num1)                    num1 = num0;        }        else        {            if(num0>num1)                num1 = num0;            num0=0;            i++;            continue;        }    }    return num1;}
0 0