题目来自力扣:
我实现功能代码如下:
int count = 0;
int recordCount = 0;
int digits = 0;
int dcount = 0;
char num[2] = "";
char* s = (char*)malloc(5 * 10000);
char* detection = (char*)malloc(5 * 10000);
memset(s, 0,5* 10000);
memset(detection, 0, 5 * 10000);
assert(s);
printf("请输入字符串:");
scanf("%s", s);
while (getchar() != '\n');
int sLength = strlen(s);
printf("字符串的长度为:%d\n", sLength);
if (sLength == 1)
{
goto B;
}
for (int i = 0; i < sLength - 1; i++)
{
count = 1;
detection[dcount++] = s[i];
for (int j = i + 1; j < sLength; j++)
{
num[0] = s[j];
char* r = strpbrk(detection, num);
if (r != NULL)
{
goto A;
}
else
{
detection[dcount++] = s[j];
count++;
}
r = NULL;
}
A:;
for (int i = 0; i < count; i++)
{
detection[i] = '\0';
}
if (recordCount < count)
{
digits = i;
recordCount = count;
}
count = 0;
dcount = 0;
}
for (int j = digits; j < digits + recordCount; j++)
{
printf("s[%d] == %c\n", j, s[j]);
detection[dcount++] = s[j];
}
printf("无重复字符最长子串是: ");
printf("%s", detection);
return 0;
B:;
printf("无重复字符最长子串是: ");
printf("%s", s);
return 0;
代码很乱没有优化过