描述
输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置)
本题含有多组样例输入。
输入描述:
输入一个字符串。1<=len(字符串)<=200
输出描述:
输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格)。
示例1
输入:
abcd12345ed125ss123058789
a8a72a6a5yy98y65ee1r2
复制
输出:
123058789,9
729865,2
复制
说明:
样例一最长的数字子串为123058789,长度为9
样例二最长的数字子串有72,98,65,长度都为2
#include <stdio.h>
#include <string.h>
#if 0
#define dbg printf
#else
#define dbg
#endif
int main(void)
{
int max[32] = {0};
char a[32][64][64] = {0};
char in[201] = {0};
int i, j, k, m, n;
int val;
i = 0;
j = 0;
while(scanf("%s", in) != EOF)
{
dbg("(%d):in=(%s)\n", __LINE__, in);
m = 0;
j = 0;
for(k=0; k<strlen(in); k++)
{
if(in[k]>='0' && in[k]<='9')
{
a[i][j][m++] = in[k];
}
else if(m != 0)
{
j++;
m = 0;
}
}
i++;
}
for(j=0; j<i; j++)
{
val = 0;
m = 0;
while(strlen(a[j][m]) != 0)
{
if(val < strlen(a[j][m]))
{
val = strlen(a[j][m]);
}
m++;
}
for(n=0; n<m; n++)
{
if(strlen(a[j][n]) == val)
{
printf("%s", a[j][n]);
}
}
printf(",%d\n", val);
}
return 0;
}