校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。
题目描述
输入一串字符,包含数字[0-9]和小写字母[a-z],要求按数字从小到大、字母从a到z排序,并且所有数字排在字母后面
输入描述:
一串字符
输出描述:
按规则排序的一串字符
示例1
输入
a31bz
输出
abz13
说明
这一道题目,使用桶排序,时间复杂度为O(N), 空间复杂为O(N)
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main()
{
string str,res;
cin>>str;
int flag[100];
memset(flag,0,sizeof(flag));
for(auto c:str){
if(isdigit(c)) flag[c-'0']++;
else flag[c-'a'+10]++;
}
for(int i=10;i<100;i++){
while(flag[i]){
res.push_back('a'+i-10);
flag[i]--;
}
}
for(int i=0;i<10;i++){
while(flag[i]){
res.push_back('0'+i);
flag[i]--;
}
}
cout<<res<<endl;
}