/**
* @param {string[]} words
* @param {string} chars
* @return {number}
*/
var countCharacters = function(words, chars) {
// 缓存结果
let sum = 0
// 缓存chars中所有字母的数量
const charMap = new Map()
// 统计chars中所有字母的数量
for (const char of chars) {
charMap.set(char, (charMap.get(char) ?? 0) + 1)
}
// 为外部循环设置标签,便于直接退出
outer:
for (const word of words) {
// 创建一个新Map,用于统计chars的字母使用情况
const map = new Map(charMap)
// 遍历word中的所有字母
for (const char of word) {
// 如果char在map中不存在,表示chars无法拼写该单词,退出outer循环
if (!map.get(char)) {
continue outer
}
// 当前字母被使用,数量减一
map.set(char, map.get(char) - 1)
}
// 如果字母都被使用,表示chars可以拼写出单词,则将单词长度计入sum
sum += word.length
}
// sum为words中所有可被chars拼写出的单词长度
return sum
};
评论