40:提取数字串按数值排序
总时间限制:
1000ms
内存限制:
65536kB
描述
给定一个字符串,请将其中的所有数字串提取,并将每个数字串作为整数看待(假设可以用int 表示),按从小到大顺序输出结果,输出的整数之间以逗号间隔。如果没有数字,则输出0;例如:*1234.345#6781ad9jk81-11101?aght88ir09kp,其中的整数包括:1234,345,6781,9,81,11101,88,9,从小到大排序后,应该输出:
9,9,81,88,345,1234,6781,11101
输入
在一行内输入一串符号,长度不大于300。输入数据保证提取的整数不超过109。
输出
从小到大排序的整数序列,如果没有数字,则输出0;
样例输入
*1234.345#6781ad9jk81-11101?aght88ir09kp
样例输出
9,9,81,88,345,1234,6781,11101
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s[300];
scanf("%s",s);
int n=strlen(s);
int i,x=0;
int a[300],k=0,flag=0;
for(i=0;i<n;i++){
if(s[i]>='0'&&s[i]<='9'){
x=x*10+(s[i]-'0');
}
else{
if(s[i-1]>='0'&&s[i-1]<='9'){
flag=1;
a[k++]=x;
x=0;
}
}
}
if(s[n-1]>='0'&&s[n-1]<='9'){
flag=1;
a[k++]=x;
}
sort(a,a+k);
for(i=0;i<k;i++){
printf("%d",a[i]);
if(i!=k-1){
printf(",");
}
}
if(flag==0){
printf("0");
}
return 0;
}