解题思路:
设置一个计算个数的数组,排序后乘权重求和后输出。
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;
}
}
}
}