1.文字列の並べ替え

1.文字列の並べ替え

タイトル説明

次のルールに従って、入力文字列の文字をソートするプログラムを作成します。

ルール1:英語の文字はAからZに配置され、大文字と小文字は区別されません。

例:入力:タイプ出力:epTy

規則2:同じ英字の大文字と小文字が同時に存在する場合、それらは入力順に配置されます。

たとえば、入力:BabA出力:aABb

ルール3:英字以外の文字は元の位置を維持します。

たとえば、入力:By?e出力:Be?y

A Famous Saying: Much Ado About Nothing (2012/8).

A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

分析

1.最初に、キーボードは文字列を受け取ります。BufferedReaderまたはScannerを使用できます。

2.大文字と小文字は区別されないため、判断は26回繰り返されます。

3.最初に文字をフィルタリングし、文字を並べ替えます。入力順にAとaなどの同じ文字を入力する場合、つまり、大文字の使用の問題を意図的に考慮する必要がない場合は、StringBuildを使用して接続します。スプライシングは要件を満たしています後で、並べ替えが実装されます

4.文字以外の文字を文字列に挿入し、元の位置に挿入します。

コード

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str;
		while ((str = br.readLine()) != null) {
			char[] array = str.toCharArray();
			StringBuilder ss = new StringBuilder();
			for (int i = 0; i < 26; i++) {
				char c = (char) ('A' + i);
				for (int j = 0; j < str.length(); j++) {
					if (c == array[j] || c == array[j] - 'a' + 'A') {
						ss.append(array[j]);
					}
				}
			}
			for (int i = 0; i < array.length; i++) {
				if (!((array[i] >= 'a' && array[i] <= 'z') || (array[i] >= 'A' && array[i] <= 'Z'))) {
					ss.insert(i, array[i]);
				}
			}
			System.out.println(ss.toString());
		}
	}
}

おすすめ

転載: blog.csdn.net/qq_45874107/article/details/113619983