题解 | #字符串排序#

字符串排序

https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584

import java.util.*;
import java.util.stream.Collectors;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String input = in.nextLine();
        char[] chars = input.toCharArray();
        char[] newChars = new char[chars.length];
        List<Character> list = new ArrayList<>();
        for (int i = 0; i < chars.length; i++) {
            if ((chars[i] >= 'a' && chars[i] <= 'z') || (chars[i] >= 'A' && chars[i] <= 'Z')) {
                list.add(chars[i]);

            } else {
                newChars[i] = chars[i];
            }
        }
        List<Character> collect = list.stream().sorted((c1, c2) -> {
            if ((c1 >= 'a' && c1 <= 'z') && (c2 >= 'a' && c2 <= 'z')) {
                return c1 - c2;
            }
            if ((c1 >= 'A' && c1 <= 'Z') && (c2 >= 'A' && c2 <= 'Z')) {
                return c1 - c2;
            }
            if ((c1 >= 'A' && c1 <= 'Z') && (c2 >= 'a' && c2 <= 'z')) {
                return c1 + 32 - c2;
            }
            if ((c1 >= 'a' && c1 <= 'z') && (c2 >= 'A' && c2 <= 'Z')) {
                return c1 - c2 - 32;
            }
            return c1 - c2;

        }).collect(Collectors.toList());

        int n = 0;
        for (int i = 0; i < newChars.length; i++) {
            if (newChars[i] == 0) {
                System.out.print(collect.get(n).charValue());
                n = n + 1;
            } else {
                System.out.print(newChars[i]);
            }
        }

    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务