题解 | #名字的漂亮度#

名字的漂亮度

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

use std::io::{self, *};

fn main() {
    let stdin = io::stdin();
    unsafe {
        for (index, line) in stdin.lock().lines().enumerate() {
            if index == 0 {continue}
            let ll = line.unwrap();

            let mut v = ll.trim().chars().collect::<Vec<char>>();
            let vv = v.clone();
            v.sort(); // 先把相同的字母相邻排列,再按个数排列才能避免2个字母出现次数一样但是按个数排序后交替出现的情况
            v.sort_by_key(|&i| vv.iter().filter(|&j| *j == i).count());
            let res = v.iter().rev().fold((0, v[v.len() - 1], 26), |acc, i| {
                if acc.1 == *i {
                    (acc.0 + acc.2, acc.1, acc.2)
                } else {
                    (acc.0 + acc.2 - 1, *i, acc.2 - 1)
                }
            });
            println!("{}", res.0)
        }
    }
}

全部评论

相关推荐

双尔:你就写拥有ai开发经历,熟练运用提示词,优化ai,提高ai回答质量
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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