HJ102 字符统计

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(''));
});
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容