https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0
第一次实现
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on('line', function (str) {
let map=new Map()
let arr=[]
for(let i=0;i<str.length;i++){
let cha=str[i]
if(map.has(cha)){
idx=arr.findIndex((item)=>item.content===cha)
arr[idx].num=arr[idx].num+1
}else{
map.set(cha,1)
arr.push({
content:cha,
num:1
})
}
}
arr.sort((a,b)=>{
if(b.num-a.num!==0){
return b.num-a.num
}
return a.content.codePointAt()-b.content.codePointAt()
})
let new_str=''
arr.forEach((item)=>{
new_str+=item.content
})
console.log(new_str)
});
优化后
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", function (str) {
let map = {};
for (let i = 0; i < str.length; i++) {
let cha = str[i];
if (cha in map) {
map[cha] = map[cha] + 1;
} else {
map[cha] = 1;
}
}
let arr = Object.keys(map);
arr.sort((a, b) => {
if (map[b] - map[a] !== 0) {
return map[b] - map[a];
}
return a.codePointAt() - b.codePointAt();
});
console.log(arr.join(''));
});