首页 > 试题广场 >

排序危机

[编程题]排序危机
  • 热度指数:219 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\,\,\,\,\,\,\,\,\,\,小歪有一个同时包含了小写字母、大写字母和数字的字符串,他现在想要重新排列这些字符,使得小写字母都在左边,大写字母全在右边。注意,对于某两个小写字母,排序不会改变他们的相对位置。

输入描述:
\,\,\,\,\,\,\,\,\,\,第一行输入一个整数 n\left(1\le n \le 10^5\right) 代表字符串的长度。
\,\,\,\,\,\,\,\,\,\,第二行输入一个长度为 n ,且由小写字母、大写字母和数字构成的字符串 s


输出描述:
\,\,\,\,\,\,\,\,\,\,在一行上输出一个长度为 n 的字符串,代表排序后的字符串。
示例1

输入

5
Aa123

输出

a123A

说明

\,\,\,\,\,\,\,\,\,\,注意,对于数字字符 '\rm 1' 、'\rm 2'  和 '\rm3' ,在输出时您不能改变他们彼此间的顺序,例如 "\rm a321A" 就是错误的。
示例2

输入

14
D1dA1a4M5m14Ee

输出

dame114514DAME
#include <bits/stdc++.h>
using namespace std;
int main(){
    string s;
    int n;
    cin>>n>>s;
    string low,dil,upp;
    for(char c :s){
        if(islower(c)){
            low+=c;
        }
        else if(isdigit(c)){
            dil+=c;
        }
        else if(isupper(c)){
            upp+=c;
        }
    }
    cout<<low+dil+upp<<endl;
    return 0;
}
发表于 2025-11-28 21:00:27 回复(0)