这个题目确实在输出格式上没有说清楚,应该是如下几种情况:
1 如果是输入就是一个空字符串,那么输出空串,不输出数字个数;
2 如果输入是一串字符但是没有任何数字,那么直接输出0,不能有其它输出;
3 如果输入的字串中最长的数字字串只有一组,那么输出这个数字字串再加上数字字串长度,用逗号隔开;
1 如果是输入就是一个空字符串,那么输出空串,不输出数字个数;
2 如果输入是一串字符但是没有任何数字,那么直接输出0,不能有其它输出;
3 如果输入的字串中最长的数字字串只有一组,那么输出这个数字字串再加上数字字串长度,用逗号隔开;
4 如果输入字串中有多个相同长度的数字字串,那么依次输出这些字串,用逗号隔开,在最后输出这些字串的长度,如输入132ab123 那么 输出 132,123,3
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string s;
string maxs, maxs2[10];
string temp ;
int maxn = 0;
int okay = 0;
int k = 0, digit = 0;
int flag[105] = {0}, flagMore = 0;
int num = 1, num2 = 0;
int main(){
cin>>s;
int len = s.length();
if(len == 0){
cout<<" "<<endl;
return 0;
}
for(int i = 0; i < len; i++){
char c = s[i];
if(isdigit(c)) {flag[i] = 1; okay = 1;}
}
/*
for(int i = 0; i < len; i++){
cout<<flag[i]<<" ";
}
*/
for(int i = 0; i < len;){
k = i;
int tmposition = 0;
int position = 0;
if(flag[k++]){
k--;
digit = 1;
tmposition = k;
while(flag[++k])
position = k;
int maxtemp = position - tmposition + 1;
temp = s.substr(tmposition, maxtemp);
if(maxtemp > maxn){
maxn = maxtemp;
maxs = temp;
}
else if (maxtemp == maxn){
maxs2[num2++] = temp;
flagMore = 1;
}
}
i = k;
}
if(okay){
if(flagMore){
cout<<maxs<<",";
for(int i = 0; i < num2; i++)
cout<<maxs2[i]<<",";
cout<<maxn<<endl;
}
else
cout<<maxs<<","<<maxn<<endl;
}
else
cout<<"0"<<endl;
return 0;
}