HJ26

题目描述
编写一个程序,将输入字符串中的字符按如下规则排序。

规则 1 :英文字母从 A 到 Z 排列,不区分大小写。

如,输入: Type 输出: epTy

规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。

如,输入: BabA 输出: aABb

规则 3 :非英文字母的其它字符保持原来的位置。

如,输入: By?e 输出: Be?y

注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行)

输入描述:
输入字符串
输出描述:
输出字符串
示例1
输入
A Famous Saying: Much Ado About Nothing (2012/8).
输出
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

处理得不好

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNext()) {
            String string = scanner.nextLine();
            //26个LinkedList的数组,用字符数组先存储非英文字母
            LinkedList[] linkedLists = new LinkedList[26];
            for (int i = 0; i < 26; i++) {
                linkedLists[i] = new LinkedList();
            }
            int len = string.length();
            // 非英文顺序
            char[] chars = new char[len];
            for (int i = 0; i < len; i++) {
                chars[i] = 'a';
            }

            for (int i = 0; i < len; i++) {
                if (string.charAt(i) >= 'A' && string.charAt(i) <= 'Z') {
                    linkedLists[string.charAt(i) - 'A'].add(string.charAt(i));
                } else if (string.charAt(i) >= 'a' && string.charAt(i) <= 'z') {
                    linkedLists[string.charAt(i) - 'a'].add(string.charAt(i));
                } else {
                    chars[i] = string.charAt(i);
                }
            }
            // 英文顺序
            char[] eChars = new char[len];
            int eLen = 0;
            for (int i = 0; i < 26; i++) {
                for (Object character : linkedLists[i]) {
                    eChars[eLen++] = (char) character;
                }
            }
            for (int i = 0, j = 0; i < len; i++) {
                if (chars[i] != 'a') {
                    System.out.print(chars[i]);
                } else {
                    System.out.print(eChars[j++]);
                }
            }
            
            System.out.println();
        }

    }
}
posted @ 2021-01-26 16:05  tanjr  阅读(164)  评论(0编辑  收藏  举报