码迷,mamicode.com
首页 > 其他好文 > 详细

HJ26

时间:2021-01-27 13:36:37      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:英文   char   字符数组   while   abc   ++   imm   输出   public   

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

规则 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();
        }

    }
}

HJ26

标签:英文   char   字符数组   while   abc   ++   imm   输出   public   

原文地址:https://www.cnblogs.com/tanjr/p/14330898.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!