描述
某场选举一共有 n 位候选人入选,候选人的名字均由大写字母构成,且互不相同,使用 c1,c2,…,cn 表示。
选举结束后,统计了 m 张选票,每张选票上均写有候选人的名字,使用 v1,v2,…,vm 表示。
求解每个候选人获得的票数。特别地,如果某张选票上的候选人名字不在候选名单中,则该票视为无效票。你需要同时统计无效票的数量。
输入描述:
第一行输入一个整数 n(1≦n≦100) 代表候选人数。
第二行输入 n 个长度为 1≦len(ci)≦10、仅由大写字母构成的字符串 c1,c2,…,cn,代表候选人的名字。保证候选人的名字互不相同。
第三行输入一个整数 m(1≦m≦100) 代表投票人数。
第四行输入 m 个长度为 1≦len(vi)≦10、仅由大写字母构成的字符串 v1,v2,…,vm,代表投票内容。
输出描述:
对于每一位候选人,新起一行。先输出其名字,随后输出一个空格、一个冒号、一个空格作为间隔,最后输出其获得的票数。形如 ci : numbersi,其中 ci 是候选人的名字,numbersi 是候选人的票数。
最后一行以相同的格式输出无效票的数量。形如 Invalid : numbers,其中 numbers 是无效票的数量。
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);
}
const nameArr = arr[1].split(" ");
const ticketArr = arr[3].split(" ");
const n = {};
for (let i = 0; i < nameArr.length; i++) {
n[nameArr[i]] = ticketArr.filter((u) => u == nameArr[i]).length;
}
let sum = 0;
for (let key in n) {
sum += n[key];
}
n.Invalid = ticketArr.length - sum;
for (let key in n) {
console.log(key + " : " + n[key]);
}
})();