当前位置: 代码迷 >> 综合 >> LeetCode-1160-拼写单词-JavaScript
  详细解决方案

LeetCode-1160-拼写单词-JavaScript

热度:82   发布时间:2023-12-17 08:07:45.0

题目出处

题目

给你一份『词汇表』(字符串数组) 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;
};
  相关解决方案