/** * return topK string * @param strings string字符串一维数组 strings * @param k int整型 the k * @return string字符串二维数组 */ function topKstrings( strings , k ) { // write code here var map = new Map(); // strings.map((item)=>{ // map.set(item,map.get(item) ? map.get(item)+1: 1); // }) // let map = new Map(); strings.forEach(item => { if (map.has(item)) { let value = parseInt(map.get(item)); value = value + 1; map.set(item, value.toString()); }else { map.set(item, "1"); } }) let arr = Array.from(map); arr.sort((a, b) => { if (a[1] != b[1]){ return b[1] - a[1]; //逆序排序 根据出现次数从大到小排序 }else { if (a[0] < b[0]) { return -1 } else { return 0; } } }) return arr.slice(0, k); // let length = strings.length; // for(let i=0;i<length;i++){ // if(!map.has(strings[i])){ // map.set(strings[i],1) // }else{ // var count = map.get(strings[i]); // count++; // map.set(strings[i],count); // } // } // var res = [] // 结果数组 // var temp = [] //标记前k个的顺序 // let tempSet = new Set(strings); // var findSort = [...tempSet]; // findSort.forEach((item,index)=>{ // if(index<k){ // temp.push(item) // } // }) // for(let i=0;i<length;i++){ // // if(map.get(strings[i]) <= k && strings[i] === temp[i] ){ // // res.push([strings[i],map.get(strings[i])]) // // } // if(map.get([...new Set(strings)][i]) <= k && [...new Set(strings)][i] === temp[i] ){ // // res.push([strings[i],map.get(strings[i])]) // res.push([...new Set(strings)][i],map.get([...new Set(strings)][i])); // } // } // var Res = res.sort((a,b)=>b[1]-a[1]) // 降序排序 // return Res; } module.exports = { topKstrings : topKstrings };