利用标志位进行记录,无需排序。

#include<stdio.h>
#include<string.h>
int main(){
    int mark[128]={0};
    char str[1001]={'\0'};
    while(~scanf("%s",&str)){
        int len=strlen(str);
        for(int i=0;i<len;i++){
            mark[(int)str[i]]++; //利用顺序标志位计数
        }
        for(int j=0;j<128;j++){
            if(mark[j]!=0){
                for(int k=mark[j];k>0;k--)
                    printf("%c",j);
            }
        }printf("\n");
    }
}