描述
对于给定由小写字母构成的字符串,定义字符串的“漂亮度”为该字符串中所有字母“漂亮度”的总和。
每一个字母的“漂亮度”将由你来确定,具体规则如下:
∙每一个字母的“漂亮度”为 1 到 26 之间的整数;
∙没有两个字母的“漂亮度”相同。
现在,你需要确定每个字母的“漂亮度”,以使得字符串的“漂亮度”最大。
输入描述:
每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≦T≦10) 代表数据组数,每组测试数据描述如下:
在一行上输入一个长度为 1≦len(s)≦104 、仅由小写字母构成的字符串 s 。
输出描述:
对于每一组测试数据,输出一个整数,表示字符串的最大“漂亮度”。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
const arr = [];
while ((line = await readline())) {
arr.push(line);
}
arr.shift();
for (let str of arr) {
let map = new Map();
for (let i = 0; i < str.length; i++) {
map.set(str[i], (map.get(str[i]) || 0) + 1);
}
const mapArr = [...map.values()].sort((a, b) => b - a);
let value = 0;
for (let i = 0, j = 26; i < mapArr.length; i++, j--) {
value += j * mapArr[i];
}
console.log(value);
}
})();