1、问题描述:
输入一个字符串,字符串包含大小写字母和其他字符,现在要求对此字符串进行排序,并输出结果。
排序要求:
字母按a-z,A-Z排序,不分大小写,如果字母相同小写在大写之前。
例如:”abcADZ“排序结果为“aAbcDZ”
2、思路描述:
采用桶排序方法,桶排序是指以数组下标代表具体字母,数组内容存放对应字母个数。
用两个数组分别存储大小写字母个数,最后组合输出。
3、代码实现:
package cn.xaut.xinyongka;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()){
String str = in.nextLine();
int[] alph = new int[26];
int[] smallAlph = new int[26];
StringBuffer noAlph = new StringBuffer();
char[] strs = str.toCharArray();
for(int i=0; i < strs.length; i++){
if(strs[i] >= 65 && strs[i] <= 90){
alph[strs[i]-'A']++;
} else {
if (strs[i] >= 97 && strs[i] <= 122) {
smallAlph[strs[i]-'a']++;
} else {
noAlph.append(strs[i]);
}
}
}
StringBuffer result = new StringBuffer();
for(int j=0; j < 26; j++){
while(smallAlph[j] > 0){
result.append((char)(j + 'a'));
smallAlph[j]--;
}
while(alph[j] > 0){
result.append((char)(j + 'A'));
alph[j]--;
}
}
result.append(noAlph);
System.out.println(result);
}
}
}