/** * @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};
评论