资讯专栏INFORMATION COLUMN

2020京东秋招笔试编程(姓名排序)

verano / 3342人阅读

摘要:老师录入的时候,需要输入姓和名例如字母均为大写,姓名以空格隔开,并且要将这些人按一定规则排序。输入输入包括多行,每一行两个字符串,代表一个人的姓和名。输出输出排序后的名单。

题目描述:

马上就要开学啦,教务处的老师拿到新生名单,现在他需要根据考生的姓名录入一个拼音版的新名单。老师录入的时候,需要输入姓和名(例如:ZHANG SAN字母均为大写,姓名以空格隔开),并且要将这些人按一定规则排序。
排序的方式如下:
首先,按照该姓出现的次数排序,即:姓出现次数多的人先排序;
其次,若两个人的姓出现的次数一样多(或者是同一个姓),按照原名单的顺序。

输入

输入包括多行,每一行两个字符串,代表一个人的姓和名。

输出

输出排序后的名单。

样例输入

ZHANG SAN
LI SI
WANG WU
WANG LIU
WANG QI
ZHANG WU
LI WU

样例输出

WANG WU
WANG LIU
WANG QI
ZHANG SAN
LI SI
ZHANG WU
LI WU

代码部分
var array = ["ZHANG SAN", "LI SI", "WANG WU", "WANG LIU", "WANG QI", "ZHANG WU", "LI WU"];

function sort(array) {
  //提取姓氏数组xingArray
  var xingArray = [];
  for (var i = 0; i < array.length; i++) {
    var xingindex = array[i].indexOf(" ");
    xingArray.push(array[i].slice(0, xingindex));
  }

  //得到删除姓氏数组中重复项的数组(简化姓氏数组simpleArr)
  var simpleArr = [];
  for (var i = 0; i < xingArray.length; i++) {
    if (simpleArr.indexOf(xingArray[i]) == -1) {
      simpleArr.push(xingArray[i]);
    }
  }
  // console.log(simpleArr);

  //统计姓名数组中各个姓氏出现的次数
  var countArray = [];
  for(var i = 0; i < simpleArr.length; i++) {
    var num = 0;
    for(var j = 0; j < array.length; j++) {
      if(simpleArr[i] == array[j].slice(0, array[j].indexOf(" "))) {
        num++;
      }
    }
    countArray.push(num);
  }
  // console.log(countArray);


  //计算姓氏出现次数中的最大项
  var maxCount = 0;
  for (var i = 0; i < countArray.length; i++) {
    if (countArray[i] > maxCount) {
      maxCount = countArray[i];
    }
  }


  //将出现同一次数的姓氏归并到一个数组,形成一个二维数组
  var sortXing = [];
  
  while(maxCount) {
    var xingteam = [];
    for(var i = 0; i < countArray.length; i++) { 
      if(countArray[i] == maxCount) {
        xingteam.push(simpleArr[i]);
      }
    }
    sortXing.push(xingteam);
    maxCount--;
  }
  // console.log(sortXing);

  //对姓名进行排序
  var sortName = [];
  for(var i= 0; i < sortXing.length; i++) {
    for(var j = 0; j < array.length; j++) {
      for(var k = 0; k < sortXing[i].length; k++) {
        if(sortXing[i][k] == array[j].slice(0, array[j].indexOf(" "))) {
          sortName.push(array[j]);
        }
      } 
    }
  }

  console.log(sortName);
}

sort(array);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106958.html

相关文章

  • 【Java】广州三本秋招经历

    摘要:具体的时间线从月中旬,我开始关注牛客网的秋招内推信息。直至十月中下旬结束秋招。之前也写过自己在广州找实习的经历,那次把面试的过程都具体贴出来了。我今年就完美错过了春招实习经历。 前言 只有光头才能变强 离上次发文章已经快两个月时间了,最近一直忙着秋招的事。今天是2018年10月22日,对于互联网行业来说,秋招就基本结束了。我这边的流程也走完了(不再笔试/面试了),所以来写写我的秋招经历...

    qqlcbb 评论0 收藏1
  • 结束了我短暂的秋招,说点自己的感受

    摘要:总体来说,玄武科技的真的很热情,为他们点个赞,虽然自己最后没能去玄武科技,然后就是技术面非常简单,面和高管面也都还好,不会有压抑的感觉,总体聊得很愉快。 该文已加入开源文档:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识)。地址:https://github.com/Snailclimb... 秋招历程流水账总结 笔主大四准毕业生,在秋招末流比较幸运地进入了一家...

    KoreyLee 评论0 收藏0
  • "双非"应届生校招如何获得大厂青睐?(内附前端大厂面经+技术岗超全求职攻略)

    摘要:拿到秋招的同学,如确定入职需与用人单位签署三方协议,以保证双方的利益不受损失。当然每个岗位所要求的侧重点不同,但却百变不离其宗。方法论要想达成某个目标都有其特定的方法论,学习技术也不例外,掌握适当的学习方法才能事半功倍。 写在前面的话 笔者从17年的2月份开始准备春招,其中遇到不少坑,也意识到自己走过的弯路。故写了这篇文章总结一番,本文适合主动学习的,对自己要学的课程不明确的,对面试有...

    jeffrey_up 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<