题解 | #字符串排序#

字符串排序

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

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str = in.nextLine();
        char[] charArr = new char[str.length()];
        // 纯字母
        ArrayList<Character> list = new ArrayList<>();
        // 初始化
        for (int i = 0; i < str.length(); i++) {
            char t = str.charAt(i);
            if ((t >= 'a' && t <= 'z') || (t >= 'A' && t <= 'Z')) {
                list.add(t);
            } else {
                charArr[i] = t;
            }
        }
        // 排序子母
        Collections.sort(list, new Comparator<Character>() {
            @Override
            public int compare(Character o1, Character o2) {
                // 大小
                if ((o1 >= 'A' && o1 <= 'Z') && (o2 >= 'a' && o2 <= 'z')) {
                    Character t = Character.toLowerCase(o1);
                    return t.compareTo(o2);
                }// 小大
                else if ((o1 >= 'a' && o1 <= 'z') && (o2 >= 'A' && o2 <= 'Z')) {
                    Character t = Character.toLowerCase(o2);
                    return o1.compareTo(t);
                }// 同大或同小
                else {
                    return o1.compareTo(o2);
                }
            }
        });
        int index = 0;
        for (int i = 0; i < str.length(); i++) {
            if ((int)charArr[i] != 0) {
                System.out.print(charArr[i]);
            } else {
                System.out.print(list.get(index));
                index++;
            }
        }
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务