#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;
}
求一个字符串中连续出现次数最多的子串
最新推荐文章于 2018-06-03 20:18:13 发布