题解 | #名字的漂亮度#

名字的漂亮度

https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

/**
 * 字符串的漂亮度是所有字符的漂亮度之和,字符串仅由小写字母组成
 * 1、每个字母独有一个漂亮度在 1~26之间,没有任何一个字母额漂亮度是一样的
 * 2、给出多个字符串,计算字符串的最大可能的漂亮度
 * a、b、c、d、e、f、g、h、i、j、k、l、m、n、o、p、q、r、s、t、u、v、w、x、y、z
 * 看题目的说明解释,猜测题目的意思
 * 对于lisi,  按照字母顺序 i 最小其漂亮度是 26 ,接着 l 25 s 24
 * 所以lisi = 25 + 26 + 24 + 26 = 101漂亮度
 * 为了验证想法,按照上面的规则计算一下zhangsan 看看
 * 按照书字母顺序排一下,可得, 规则就是,出现次数最多的,就安排其漂亮度最大 26,其他的其次
 * a    a   n   n   g    h    s   z
 * 26   26  25  25  24   23   22  21
 * 上面和为
 */

let [row, rowNum, str1, str2] = [0, 0,'', '']
rl.on('line', function (line) {
    row++
    if(row === 1){
        rowNum = Number(line)
    }else if(row > 1 + rowNum ){
        row = 0
    }else if(row > 1){
        getNameBeauty(line)
    }
});


// 封裝一個方法计算字符串的漂亮度
function getNameBeauty(str: string){
    // 首先将所有字符转小写或大写也可以,因为题目说,忽略大小写
    str = str.toLocaleLowerCase()

    // 统计每个字符串出现次数,目前想到的比较好的办法就是键值对,
    // 那就可以使用对象来处理了
    const strArr = str.split('')
    const charObj = {}
    for(let i = 0; i < strArr.length; i++){
        if(charObj[strArr[i]]){
            charObj[strArr[i]]++
        }else {
            charObj[strArr[i]] = 1
        }
    }

    // 计算每个字符的漂亮度
    // 出现次数最多的给最大值26 其他的一次递减 25 24 23...
    const values  = Object.values(charObj).sort((a:number,b:number)=>b-a) as any
    let beauty = 0
    for(let j = 0; j < values.length; j++){
        beauty += values[j] * (26 - j)
    }

    console.log(beauty)
}

全部评论

相关推荐

码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
07-04 21:23
已编辑
东莞城市学院 后端
秋招和春招只收到几个中大厂的笔试,本人比较菜,感觉大厂的笔试太难,算法题不能全部做出来就没过了,但是CVTE和小天才的感觉不是很难,基本上都做出来了,笔试还是挂了。Boss上投了Java后端开发都没有回音,boss上有面试机会都是C#工控软件开发方向的,但是这个方向不太懂,资料又少,面试的表现有点差,现在还是想看看Java这边,面试的时候比较有把握点。想请教一下,这份简历还有什么问题,一直没什么机会,还有什么地方要修改的。
程序员小白条:学历太差,民办和公办,外包还得区分的,这个学历+这个简历,没的办法,除非你有人脉,太难了,这环境,何况你都毕业了,连一段实习都没,肯定没公司会挑选了,没竞争力,开发才招几个人,跟你竞争的可不是二本,三本的人哦,何况你在二本,三本里面也排名不高
投递小天才等公司7个岗位
点赞 评论 收藏
分享
07-02 22:46
门头沟学院 Java
码农索隆:hr:“管你投没投,先挂了再说”
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务