HJ102 字符统计

2023-08-23  本文已影响0人  vivienYang2019

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(''));
});
上一篇 下一篇

猜你喜欢

热点阅读