心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
先对读入的字符串做如下处理: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 阅读(406) 评论(0)  编辑 收藏 引用 所属分类: 题目分类:字符串处理

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理