题目来源牛客网: http://www.nowcoder.com/questionTerminal/3c334863c02443cdb61b2d73c1edf071?orderByHotValue=0&query=一组随机排列的字母数组&done=0&pos=9
一组随机排列的字母数组。请编写一个时间复杂度为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分)
Java解答版:
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Vector; public class MyDemo { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(function("abBBDSXAINiknkDKKKKJJccdDDCC")); } public static String function(String inputString){ ArrayList<Character> arrayList=new ArrayList<>();//保存大写字母 ArrayList<Character> arrayList2=new ArrayList<>();//保存小写字母 StringBuffer result=new StringBuffer(); for(int i=0;i<inputString.length();i++){ if(inputString.charAt(i)<‘a‘){//大写字母 arrayList.add(inputString.charAt(i)); }else{ arrayList2.add(inputString.charAt(i)); } } Collections.sort(arrayList); Collections.sort(arrayList2); for(int i=0;i<arrayList2.size();i++){ result.append(arrayList2.get(i)); } for(int i=0;i<arrayList.size();i++){ result.append(arrayList.get(i)); } return result.toString(); } }
我的android学习经验: http://jingyan.baidu.com/season/48891
时间: 2024-10-18 14:06:54