题目出处
题目
给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。
假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。
注意:每次拼写时,chars 中的每个字母都只能用一次。
返回词汇表 words 中你掌握的所有单词的 长度之和。
示例 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。
思路
- 创建函数 understand(word, chars) 表示能否用chars来掌握单词word。返回true or false。
- 对于 understand 函数,遍历 word的每个字符c,如果在chars中能找到c,则在chars中去掉c,继续遍历,否则返回false。遍历完毕时返回true(说明每个字符都能找到且不重复使用)
- 遍历words,碰到能掌握的就累加这个单词的长度。
var countCharacters = function(words, chars) {
let res = 0;const understand = (word, chars) => {
for (let c of word) {
if (chars.includes(c)) {
chars = chars.replace(c, '');} else {
return false;}}return true;}for (let word of words) {
if (access(word, chars)) {
res += word.length;}}return res;
};