题解 | #图片整理#
图片整理
http://www.nowcoder.com/practice/2de4127fda5e46858aa85d254af43941
描述
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(); }