美团2015校招研发笔试题——字母排序

题目来源牛客网: 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

美团2015校招研发笔试题——字母排序的相关文章

去哪儿网2015校招软件研发笔试题(杭州站)

1.String padString(String string,int minLength,char padChar); 就是在string前用padChar把string填充到至少minLength长度 如("7",3'0'),得到的结果是"007"; 如("2012",3,'0'),的到的结果是"2012"; minLength可能是负数 public static void main(String[] args) {

蘑菇街2015校招技术类笔试题A卷,回忆版(杭州站)

笔试时间:10月9号 下午 1.一串数据的最大递增序列,输出个数 例如 4,2, 6,3, 1,5, 最大递增序列为, 2,3, 5,输出3, 2.求两个整型数据集合的交集,尽可能少用时间. 假设两个集合为A.B. 算法步骤: 1.对A和B分别进行从小到大排序: 2.从A[0]和B[0]开始,如果A[i]>B[j],则j++,如果A[i]<B[j],则i++,否则找到交集中的一个元素,输出: 3.j++,再循环2: 4.循环2和3直到A和B有一个数组的下标越界. 3.一个文件记录中有50M个U

谷歌2013校招全套笔试题

1.1 B 1G字节的数据需要处理1G次.而当代pc的频率的数量级就是GHZ级的(我的PC是2.5GHZ) 1.2 D 为了高效利用流水线而调整指令的顺序就可以减少指令的运行时间. 1.3  B sprintf用于将格式化的数据写入缓冲区. foo()函数返回的是一个数组地址,但是该数组(X)是一个局部变量,在foo()函数调用结束后该地址就成为了无效地址.如果地址中的内容没有改变的话就会输出world.当然,如果该地址呗回收,就会输出错误信息. 1.4 A (x1-1)+(x2+1)+(x3+

笔试题:排序后取最小差值数

笔试题:要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高. Smple input:161 189 167 172 188 Sample outPut: 188 189 public class demo06{ public static void main(String[] args){ int[] arr={161,189,167,172,188};//原始值 //将原始值升序排序

百度2015年前端笔试题(南京区域)

1,考前也差了百度前几年的笔试题,发现每年每个地方都不一样,不过变化都不大,涉及的都是基础的知识. 2,从出题看,题目也都很即兴,应该百度也并没有设立题库什么的吧,所以发出来应该没问题吧. 大家本着提高自己前端知识的目的,讨论提高自己即可. [图片穿不上来,回头再传] 1,2不说了,都是基础. 第3题,之前没搞过,只看过一些概念,所以只回答了个大概.回来差了相关资料,大家可参考如下文章: 概述: http://www.kuqin.com/webpagedesign/20111126/315405

美团2015校招哈尔滨站笔试题--第二题

有一组随机排列的字母数组,请编写一个时间复杂度为O(n)的算法,使得这些字母安装字母从小到大顺序排好.说明:字母区分大小写,相同的字母,排序后小写排在大写前.例如:R,B,B,b,W,W,B,R,B,w排序后:b,B,B,B,B,R,R,w,W,W1)描写思路(2分)2)请用你熟悉的编程语言编写代码实现(8分) /** * * @author 无心流泪 * 空间换时间 */ public class InterviewExercise { public void mySort(char[] st

2015美团校招部分笔试题

美团笔试全部都是算法题,一共8题,前面4道想对偏简单,后面4道偏难,前面4题就不贴出来了,大部分都会,下面给出后面四题的题目. 求斜率最大值:平面上N个点,每两个点都确定一条直线,求出斜率最大的那条直线所通过的两个点(斜率不存在的情况不考虑).时间效率越高越好.已知了一个排序算法. 提示:假设有(Ax,Ay).(Bx, By)两点(不相邻)画出的直线斜率为K,则点(Cx, Cy)(在AB之间Cx > Ax, Cx < Bx)则ABC三点组成三角形(若组成不了三角形说明在一条直线上)则直线AC或

算法-美团2015校招笔试:写一个复杂度为n的排序算法

一组随机排序的字母数字.请编写一个时间复杂度为O(n)的算法,使这些字母从小到大顺序排序. 说明:字母区分大小写,相同的字母,排序护小写排在前面. 例如:R,B,B,b,W,W,B,R,B,w 排序为:b,B,B,B,B,R,R,w,W,W #include <stdio.h> #include <string.h> void getHelper(); int main() { char str[100]; int helper[150]={0}; int i,j; gets(st

2015阿里校招前端笔试题

转自:http://www.cnblogs.com/yuanzm/p/3936376.html 1. 下面哪些是NodeJS官方模块? A . Querystring    B. Request    C .Async   D. Dns 这一题我觉得有点蛋疼,什么就叫做官方模块?在nodejs里面,模块一般分成核心模块.用户自定义的文件模块.所以我理解这里的官方模块为核心模块,但是即便是如此, 这一题还是比较蛋疼的,谁记得那么多.不过我在stackoverflow找到了一个比较合理的解释:htt