列表

详情


NC15411. 牛哥重组字符串

描述

一天,牛哥闲着没事,随便拿来了一些字符串,他想把数字,大写字母,小写字母抽出来,各自重新排序(按照从小到大顺序排),然后按照数字,小写字母,大写字母依次写出来就好了。聪明的你,能不能给予解答一下,会发给你气球哦。(可以看着结合以下举例)

输入描述

输入一段字符串s(s的长度不超过100000)
注意多组输入

输出描述

输出只有一行排过序的数字,排过序的小写字母,排过序的大写字母;

示例1

输入:

14''.'}[abcABC

输出:

14abcABC

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 19ms, 内存消耗: 472K, 提交时间: 2021-03-08 10:50:38

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    while(cin>>s){
        string s1,s2,s3;
        for(char c:s){
            if(c>='0'&&c<='9')s1.push_back(c);
            else if(c>='a'&&c<='z')s2.push_back(c);
            else if(c>='A'&&c<='Z')s3.push_back(c);
        }
        sort(s1.begin(),s1.end());
        sort(s2.begin(),s2.end());
        sort(s3.begin(),s3.end());
        cout<<s1<<s2<<s3<<endl;
    }
    return 0;
}

C++(g++ 7.5.0) 解法, 执行用时: 9ms, 内存消耗: 448K, 提交时间: 2022-12-04 19:11:39

#include <bits/stdc++.h>
using namespace std;
int main(){
    string a;
    while(cin>>a){
        sort(a.begin(),a.end());
        for(int i=0;i<a.size();i++)
            if(a[i]>='0'&&a[i]<='9')
                cout<<a[i];
        for(int i=0;i<a.size();i++)
            if(a[i]>='a'&&a[i]<='z')
                cout<<a[i];
        for(int i=0;i<a.size();i++)
            if(a[i]>='A'&&a[i]<='Z')
                cout<<a[i];
        cout<<'\n';
    }
}

上一题