描述
Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。
本题含有多组样例输入。
输入描述:
Lily使用的图片包括"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024。
输出描述:
Lily的所有图片按照从小到大的顺序输出
示例1
输入:
Ihave1nose2hands10fingers
复制
输出:
0112Iaadeeefghhinnnorsssv

import java.util.*;
public class Main {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            while(sc.hasNext()){
                int[] arr = new int[128];
                String str = sc.nextLine();
                for(int i=0;i<str.length();i++){
                    int k = str.charAt(i);//将当前下标的字母 转化成ascii值
                    arr[k]++;//对应数组的下标的值++,表示这个字母出现的次数
                }
                for(int j=48;j<arr.length;j++){
                    //j=48,表示ascii值中0的取值 ,村换
                    if(arr[j]!=0){
                        //从出现过的次数的值打印
                        for(int b = 0;b<arr[j];b++){
                            System.out.print((char)j);//出现几次打印几次
                        }
                    }
                }
                System.out.println();
            }
        }
}

第2种解法更简单

while(sc.hasNext()){
                String str = sc.nextLine();
                char[] arr = str.toCharArray();
                Arrays.sort(arr);//自动从小到大排序
                for(char c : arr){
                    System.out.print(c);
                }
               System.out.println();
            }