import java.util.Scanner;
//题目描述
//编写一个程序,将输入字符串中的字符按如下规则排序。
//规则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).
//1)先记录字母字符,并将它们按找顺序排好,且排序时字符的大小写按照出现的顺序进行排序
//2)然后替换原来的位置上的字母字符
public class NC_026字符串排序 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String s = sc.nextLine();
int len = s.length();//输入字符串的长度
//System.out.println(len);
char[] c = s.toCharArray();//将输入的字符串转换成字符数组
char[] temp = new char[len];//创建一个新的字符数组,其长度为输入的字符串的长度
int k = 0;
for(int i = 0;i < 26; i++){//两个字符的ASCII码的差值小于26,从a/A开始查找
for(int j = 0;j < len; j++){
if(c[j]-'a'== i || c[j]-'A'== i){//此处是将字母字符排序(且保持输入的顺序)保存到temp字符数组中
temp[k++] = c[j];
//System.out.print(c[j] + ",");
//A,a,a,A,A,b,c,d,F,g,g,h,h,i,i,m,M,n,N,n,o,o,o,o,s,S,t,t,u,u,u,y,
}
}
}
//System.out.println();
k=0;
for(int j = 0;j < len; j++){//将temp中的字母字符替换原数组中的字母字符,其他非字母字符保持位置不变
if(c[j] >= 'a' && c[j] <= 'z' || c[j] >= 'A' && c[j] <= 'Z')
c[j] = temp[k++];
}
System.out.println(String.valueOf(c));//将字符数组打印出来
}
}
}
import java.util.Scanner;
//题目描述
//编写一个程序,将输入字