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

描述

输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置)

本题含有多组样例输入。

数据范围:字符串长度1≤n≤200  , 保证每组输入都至少含有一个数字

输入描述:

输入一个字符串。1<=len(字符串)<=200

输出描述:

输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格)。

示例1

输入:

abcd12345ed125ss123058789
a8a72a6a5yy98y65ee1r2

输出:

123058789,9
729865,2

说明:

样例一最长的数字子串为123058789,长度为9
样例二最长的数字子串有72,98,65,长度都为2  

#include<stdio.h>
#include<string.h>

int isNum(char c) //判断是否是数字
{
    if(c>='0' && c<='9')
        return 1;
    else
        return 0;

}

int main()
{
        char str[200];
        scanf("%s
",str);
    
        char answer[201][201]; //存放提取出的所有数字串
        int m=0,n=0;
    
        //  提取连续数字串
        for(int i=0;i<=strlen(str);i++)
        {
            if(isNum(str[i])) //如果是数字
            {
                answer[m][n++]=str[i];
            }

            else{
                m++;
                n=0;
            }
        }
        // 找到最长数字串
        
        int maxlen=0;
        int index=0;
        for(int i=0;i<m;i++)
        {
            if(maxlen < strlen(answer[i]))
            {
                maxlen=strlen(answer[i]);
                index=i;
            }      
        }

        // 输出结果
        /*
            有多个则都输出
        */
        for(int i=0;i<m;i++)
        {
            if(strlen(answer[i])==maxlen)
            {
                printf("%s",answer[i]);
            }
        }
        printf(",%d
",maxlen);
    
}