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