描述
输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置)
本题含有多组样例输入。
数据范围:字符串长度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);
}