描述
Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过代码解决。
数据范围:每组输入的字符串长度满足 【0 - 1000】
输入描述:
Lily使用的图片包括"A"到"Z"、“a"到"z”、“0"到"9”。输入字母或数字个数不超过1024。
输出描述:
Lily的所有图片按照从小到大的顺序输出
示例1
输入: Ihave1nose2hands10fingers 输出: 0112Iaadeeefghhinnnorsssv
解法
本题按照ASCII码值从小到大排序。查ASCII码定义可知,数字排在最前、其次是大写字母,最后是小写字母。这里采用Java List的自然排序即可。
* Copyright (c) waylau.com, 2022. All rights reserved.
*/
package com.waylau.nowcoder.exam.oj.huawei;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
/**
* 描述:Lily上课时使用字母数字图片教小朋友们学习英语单词,
* 每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。
* 请大家给Lily帮忙,通过代码解决。
* 数据范围:每组输入的字符串长度满足 【0 - 1000】
* 输入描述:Lily使用的图片包括"A"到"Z"、“a"到"z”、“0"到"9”。
* 输入字母或数字个数不超过1024。
* 输出描述:Lily的所有图片按照从小到大的顺序输出
* 示例1
* 输入:Ihave1nose2hands10fingers
* 输出:0112Iaadeeefghhinnnorsssv
*
* @author <a href="">Way Lau</a>
* @since 2022-08-18
*/
public class HJ034PhotoFinishing {
public static void main(String[] args) {
// 输入
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
String in = sc.nextLine();
// 输出
System.out.println(sort(in));
}
// 关闭
sc.close();
}
private static String sort(String str) {
char[] arr = str.toCharArray();
List<Character> list = new ArrayList<>();
for (char ch : arr) {
list.add(ch);
}
list.sort(Comparator.naturalOrder());
StringBuilder sb = new StringBuilder();
for (Character ch : list) {
sb.append(ch);
}
return sb.toString();
}
}
参考引用
- 本系列归档至https://github.com/waylau/nowcoder-exam-oj
- 《Java 数据结构及算法实战》:https://github.com/waylau/java-data-structures-and-algorithms-in-action
- 《数据结构和算法基础(Java 语言实现)》(柳伟卫著,北京大学出版社出版):https://item.jd.com/13014179.html

京公网安备 11010502036488号