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