2020京東秋招筆試編程(姓名排序)

題目描述:

立刻就要開學啦,教務處的老師拿到新生名單,如今他須要根據考生的姓名錄入一個拼音版的新名單。老師錄入的時候,須要輸入姓和名(例如:ZHANG SAN字母均爲大寫,姓名以空格隔開),而且要將這些人按必定規則排序。
排序的方式以下:
首先,按照該姓出現的次數排序,即:姓出現次數多的人先排序;
其次,若兩我的的姓出現的次數同樣多(或者是同一個姓),按照原名單的順序。數組

輸入

輸入包括多行,每一行兩個字符串,表明一我的的姓和名。code

輸出

輸出排序後的名單。排序

樣例輸入

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 WUio

代碼部分

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);
相關文章
相關標籤/搜索