LeetCode-1160-拼写单词-JavaScript

题目出处

题目

给你一份『词汇表』(字符串数组) 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。

思路

  1. 创建函数 understand(word, chars) 表示能否用chars来掌握单词word。返回true or false。
  2. 对于 understand 函数,遍历 word的每个字符c,如果在chars中能找到c,则在chars中去掉c,继续遍历,否则返回false。遍历完毕时返回true(说明每个字符都能找到且不重复使用)
  3. 遍历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;
};
全部评论

相关推荐

孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务