一组随机排列的字母数组。请编写一个时间复杂度为O(n)的算法,使得这些字母按照字母从小到大顺序排好。 说明:字母区分大小写,相同的字母,排序后小写排在大写前。 例如:R,B,B,b,W,W,B,R,B,w 排序为:b,B,B,B,B,R,R,w,W,W 1)描述思路(2分) 2)请用你熟悉的编程语言编码实现(8分)
public class LetterSort {
public static void main(String[] args) {
String[] arr = new String[] { "R",
"B", "b", "b", "W",
"W", "B", "r",
"B", "w" };
List
// 将小写字母放在 list 中 ,同时将所有小写字母都转成大写字母,这样整个数组都是大写的字母
for (int i = 0; i < arr.length; i++) {
if (arr[i].compareTo("Z") > 0) {
list.add(arr[i]);
arr[i] = arr[i].toUpperCase();
}
}
// 进行排序
Arrays.sort(arr);
// 替换大写成小写
Iterator
while (iterator.hasNext()) {
String next = iterator.next();
for (int i = 0; i < arr.length; i++) {
if (!arr[i].equals(next) &&
arr[i].toLowerCase().equals(next)) {
arr[i] = arr[i].toLowerCase();
break;
}
}
// iterator.remove();
}
// 打印输出
for (String string : arr) {
System.out.print(string + "");
}
}
}