写点什么

LeetCode 题解:1160. 拼写单词,哈希表,JavaScript,详细注释

作者:Lee Chen
  • 2024-05-30
    福建
  • 本文字数:608 字

    阅读完需:约 2 分钟

原题链接

1160. 拼写单词

解题思路

  1. 用 Map 缓存 chars 中所有字母的数量

  2. 遍历单词的所有字母

  3. 如果 Map 中存在当前字母,就将 Map 缓存的字母数量减一

  4. 如果 Map 中不存在当前字母,或者字母数量为 0,表示 chars 中的字母无法拼写单词,退出循环

  5. 如果能完成该单词所有字母的遍历,表示 chars 中的字母可以拼写单词,可以统计该单词的长度


/** * @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};
复制代码


发布于: 刚刚阅读数: 5
用户头像

Lee Chen

关注

还未添加个人签名 2018-08-29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:1160. 拼写单词,哈希表,JavaScript,详细注释_LeetCode_Lee Chen_InfoQ写作社区