题解 | #在字符串中找出连续最长的数字串#

在字符串中找出连续最长的数字串

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;
}

全部评论

相关推荐

07-21 18:43
门头沟学院 Java
是暑期都招满了吗
ANEOY:今年感觉真是后端地狱级难度了,从暑期就是这样,前端需求非常大
点赞 评论 收藏
分享
苍蓝星上艾露:这简历。。。可以试试我写的开源简历优化工具https://github.com/weicanie/prisma-ai
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务