題目描述:編寫一個程序,將輸入字符串中的字符按如下規則排序。
規則1:英文字母從A到Z排列,不區分大小寫。
如,輸入:Type 輸出: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).
思路:一個嵌套循環把字符串中的字母進行排序,把所有排序后的字母專門放在temp[]中,最后輸出的時候,遍歷原來的字符數組,如果某一位是字母,那么去temp中取對應位置已經排好序的字母輸出,非字母,就輸出原位置字符。
1 /*題目描述:編寫一個程序,將輸入字符串中的字符按如下規則排序。 2 規則1:英文字母從A到Z排列,不區分大小寫。 3 如,輸入:Type 輸出:epTy 4 規則2:同一個英文字母的大小寫同時存在時,按照輸入順序排列。 5 如,輸入:BabA 輸出:aABb 6 規則3:非英文字母的其它字符保持原來的位置。 7 如,輸入:By?e 輸出:Be?y 8 樣例: 9 輸入: 10 A Famous Saying: Much Ado About Nothing(2012/8). 11 輸出: 12 A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8). 13 */ 14 import java.util.Scanner; 15 16 public class Main { 17 18 public static void main(String[] args) { 19 // TODO Auto-generated method stub 20 Scanner in = new Scanner(System.in); 21 while(in.hasNext()) 22 { 23 String input = in.nextLine(); 24 int length = input.length(); 25 char[] array = input.toCharArray(); 26 //input里面的所有字母排序 27 char[] temp = new char[length]; 28 int k = 0; 29 for(int i = 0; i<26; i++) 30 { 31 for(int j = 0; j<length; j++) 32 { 33 if(array[j] - 'a' == i || array[j] - 'A' == i) 34 { 35 temp[k++] = array[j]; 36 } 37 } 38 } 39 //notice!! 40 k = 0; 41 for(int i = 0; i<length; i++) 42 { 43 if(array[i] >= 'a' && array[i] <= 'z' || array[i] >= 'A' && array[i] <= 'Z') 44 { 45 array[i] = temp[k++]; 46 //array[i] = temp[i]; 47 } 48 } 49 System.out.println(String.valueOf(array)); 50 } 51 } 52 53 }