代码拉取完成,页面将自动刷新
<script>
// 给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。
// 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。
// 注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。
// 返回词汇表 words 中你掌握的所有单词的 长度之和。
// 来源:力扣(LeetCode)
// 链接:https://leetcode.cn/problems/find-words-that-can-be-formed-by-characters
// 示例 1:
// 输入:words = ["cat","bt","hat","tree"], chars = "atach"
// 输出:6
// 解释:
// 可以形成字符串 "cat" 和 "hat",所以答案是 3 + 3 = 6。
// 示例 2:
// 输入:words = ["hello","world","leetcode"], chars = "welldonehoneyr"
// 输出:10
// 解释:
// 可以形成字符串 "hello" 和 "world",所以答案是 5 + 5 = 10。
// 来源:力扣(LeetCode)
// 链接:https://leetcode.cn/problems/find-words-that-can-be-formed-by-characters
/**
* 分析
* 收集chars
* 记录每个的字母出现的次数
* 遍历单词表
* 如果出现一次 那么进行 -- 直到小于0 就不可以
* 如果刚好匹配 记录单词的长度 累加
*/
/**
* @param {string[]} words
* @param {string} chars
* @return {number}
*/
var countCharacters = function (words, chars) {
var alphabet = {};
var res = 0;
for (const k of chars) {
if (!alphabet[k]) {
alphabet[k] = 1;
} else {
alphabet[k] = alphabet[k] + 1;
}
}
console.log(alphabet);
for (var i = 0; i < words.length; i++) {
const map = { ...alphabet };
let isComplete = true;
for (const w of words[i]) {
if (map[w] > 0) {
map[w]--;
continue;
} else {
isComplete = false;
break;
}
}
isComplete && (res += words[i].length);
}
return res;
};
console.log(countCharacters(['cat', 'bt', 'hat', 'tree'], 'atach'));
</script>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。