经典指数          
原因
2380
浏览数
0
收藏数
 

一组随机排列的字母数组。请编写一个时间复杂度为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分)

     举报   纠错  
 
切换
1 个答案

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 = new ArrayList();

// 将小写字母放在 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 iterator = list.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 + "");

}

}

}

 
切换
撰写答案