题解 | #名字的漂亮度#

名字的漂亮度

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

解题思路:
设置一个计算个数的数组,排序后乘权重求和后输出。

use std::io::{self, *};
fn main() {
    let stdin = io::stdin();
    let mut counter = 0usize;
    for line in stdin.lock().lines() {
        let ll = line.unwrap();
        if counter == 0 {
            counter = ll.trim().parse::<usize>().unwrap();
        } else {
            let mut v = vec![0u32; 26];
            for &i in ll.trim().as_bytes() {
                v[(i - 97) as usize] += 1;
            }
            v.sort_by(|a, b| b.cmp(a));
            let mut i = 0usize;
            let mut sum = 0u32;
            let mut weight = 26u32;
            while i < 26 {
                if v[i] != 0 {
                    sum += v[i] * weight;
                    weight -= 1;
                } else {
                    break;
                }
                i += 1;
            }
            println!("{}", sum);
            counter -= 1;
            if counter == 0 {
                break;
            }
        }
    }
}
用 Rust 刷华为机试HJ 文章被收录于专栏

用 Rust 刷 HJ100 题,只需要懂基础 Rust 语法就能看懂

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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