题解 | #在字符串中找出连续最长的数字串#
在字符串中找出连续最长的数字串
https://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec
//遍历字符串,每次找到长度更大的就覆盖一次,此后找到同样长的就存入新数组
#include <stdio.h>
#include<string.h>
int main()
{
char arr[200], p[200], r[200];
while (scanf("%s", arr) != EOF)
{
int i = 0, j = 0, sz = strlen(arr), max = 0, count = 0, num = 0, M = 0, N = 0, f = 1;
for (i = 0; i < sz; i++)
{
count = 0;
num = i;
while (arr[i] >= '0' && arr[i] <= '9')
{
i++;
count++;
}
//和当前最长的的长度相同
if (count == max)
{
//M哨兵位,防止短数据存入r
if (M == count)
{
for (j = f * M; j < (f+1) * M; j++)
{
r[j] = arr[num];
num++;
}
f++;
}
//出现更大的长度后,第一次遇到同等长度
else
{
M = max;
for (j = 0; j < max; j++)
{
r[j] = arr[num];
num++;
}
f = 1;
}
}
//遇到更大长度
if (count > max)
{
max = count;
for (j = 0; j < max; j++)
{
p[j] = arr[num];
num++;
}
}
}
for (i = 0; i < max; i++)
{
printf("%c", p[i]);
}
if (M==max)//M与max相等,证明不只一组
{
for (i = 0; i < f * max; i++)
{
printf("%c", r[i]);
}
}
printf(",%d\n", max);
}
return 0;
}
