//在字符串中找出由单一重复字符组成的最长子字符串
char *find_max_substr(const char* srcstr)
{
assert( (NULL != srcstr) );
int len = strlen(srcstr);
int i, j, start = 0;
int maxlen = 1;
for (int i = 0; i < len ; i++)
{
for (int j = i + 1; j <= len; j++)//如果j<len,则当src为abb时,输出的为a
{
if (srcstr[i] != srcstr[j])
{
if (maxlen < j - i)
{
maxlen = j - i;
start = i;
}
i = j - 1;
break;
}
}
}
char *dststr = (char*)malloc((maxlen + 1)*sizeof(char));
if (NULL == dststr)
{
printf("malloc 申请内存失败!\n");
return NULL;
}
char *dest = (char *)malloc(sizeof(char) * (maxlen+1));
if(NULL == dest)
printf("内存分配失败\n");
strncpy(dest, srcstr+start, maxlen);
dest[maxlen] = '\0';
return dest;
}
int main()
{
char *str = "abb";
printf("max single substring is %s\n", find_max_substr(str));
return 0;
}