先对读入的字符串做如下处理:1、全部的'5'变成' ';2、删除前导的0(数字0本身需要保留)。
然后使用istringstream即可读入数字,之后对其进行排序并输出。
以下是我的代码:
#include<iostream>
#include<sstream>
#include<string>
#include<algorithm>
#include<cstdio>
using namespace std;
int main()
{
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
//*/
string num;
while(cin>>num)
{
num.insert(num.begin(),'5');
for(int i=0;i<num.size();i++)
if(num[i]=='5')
{
num[i]=' ';
int j=i+1;
while(j<num.size() && num[j]=='0')
{
if(j+1<num.size() && num[j+1]!='5')
num[j]=' ';
j++;
}
}
/*
cout<<"After dealing : "<<num<<endl;
//*/
istringstream sin(num);
int n(0),r[1001],t;
while(sin>>t)
r[n++]=t;
sort(r,r+n);
for(int i=0;i<n;i++)
{
if(i!=0) cout<<" ";
cout<<r[i];
}
cout<<endl;
}
return 0;
}
posted on 2011-02-28 22:04
lee1r 阅读(413)
评论(0) 编辑 收藏 引用 所属分类:
题目分类:字符串处理