C语言 查找一个字符串中出现最的重复字符串
算法思想:因为是出现的重复最多的字符串,有可能是一个字符重复最多,因此先在这个字符串中查找出现最多的字符,之后在以这个字符为标记点,开始查找最长的。
#include
#include
char cha_duo(char *a)/*查找重复最多的字符*/
{
int i,j,count,max=0;
char c;
for(i=0;a[i]!='\0';++i)
{
count=0;
for(j=0;a[j]!='\0';++j)
{
if(a[i]==a[j])
count++;
}
if(count>max)
{
max=count;
c=a[i];
}
}
return c;
}
chang_cuan(char *a,char c)/*已重复最多的字符为标记点,看看这个最多重复的字符串有多长*/
{
int min=100,count,i,j;
for(i=0;a[i]!='\0';++i)
{
count=0;
if(a[i]==c)/*到了最多重复标记点*/
for(j=i+1;a[j]!='\0';++j)
{
int k=0;
k=i;
if(a[k]==a[j])/*只在与最多重复点相同时,才比较*/
{
while(a[k]==a[j])
{
count++;/*记下多少个相等*/
k++;
j++;
}
if(count
min=count;
}
}
}
return min;/*返回重复最多的长度*/
}
void main()
{
char a[100],c;
int i,j,k;
printf("请输入一个字符串\n");
gets(a);
c=cha_duo(a);
k=chang_cuan(a,c);
printf("出现最多的字符串是\n");
for(i=0;a[i]!='\0';++i)
if(a[i]==c)
{
j=i;
while(j<=k)/*输出结果*/
{
putchar(a[j]);
j++;
}
break;
}
putchar('\n');
}