题解 | #名字的漂亮度#
名字的漂亮度
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)
}
}
}


查看1道真题和解析