HJ102 字符統(tǒng)計

https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0

第一次實(shí)現(xiàn)

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)
});

優(yōu)化后

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(''));
});
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容