文章目录

  • 拼写单词
    • 题目
    • 解题思路
    • 代码实现
    • 实现结果

拼写单词


题目来源:https://leetcode-cn.com/problems/find-words-that-can-be-formed-by-characters

题目


给你一份『词汇表』(字符串数组) 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 <= words.length <= 1000
  • 1 <= words[i].length, chars.length <= 100
  • 所有字符串中都仅包含小写英文字母

解题思路


思路:统计字母出现次数。

在 Python 中有个 Counter 类,是用哈希表记数的思路,可用于统计单词字母出现的次数。

在这里也是采用类似的思想,统计字母出现的次数,但并不直接使用 Counter 类来完成本题,而是使用 str 的 count 方法来解决。

这里,我们要统计『字母表』中每个字母出现的次数,也要统计『词汇表』中每个单词中字母出现的次数。如果,每个单词中字母出现的次数都小于等于字母表中每个字母出现的次数。那么这个单词就可以拼写出来。

具体可以看下面的图解:

代码实现


class Solution:def countCharacters(self, words: List[str], chars: str) -> int:ans = 0# 遍历词汇表for word in words:# 遍历单词for char in word:# 统计词汇表单词字母出现的次数# 统计字母表中每个字母出现的次数# 比较单词字母出现次数与字母表每个字母出现的次数if word.count(char) <= chars.count(char):flag = Trueelse:flag = Falsebreak# 若是单词字母出现次数小于或等于字母表每个字母出现的次数,将单词的长度累加到返回值 ansif flag:ans += len(word)return ans

实现结果



以上就是使用统计字母出现次数的思路,解决《拼写单词》问题的主要内容。


欢迎关注微信公众号《书所集录》

LeetCode 拼写单词相关推荐

  1. 【LeetCode】1160. 拼写单词(C++)

    1160. 拼写单词(C++) 1 题目描述 2 示例描述 2.1 示例 1 2.2 示例 2 3 解题提示 4 解题思路 5 源码详解(C++) 1 题目描述 给你一份『词汇表』(字符串数组) wo ...

  2. 拼写单词(leetcode 1160)

    文章目录 1.问题描述 2.难度等级 3.热门指数 4.解题思路 5.实现示例 5.1 C++ 5.2 Golang 参考文献 1.问题描述 给你一份『词汇表』(字符串数组) words 和一张『字母 ...

  3. 伍六七带你学算法 入门篇-拼写单词

    力扣解题,每日一题 1160. 拼写单词 难度- 简单 给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars. 假如你可以用 chars 中的『字母』(字符)拼写出 w ...

  4. LeetCode 140. 单词拆分 II(DP+回溯)

    1. 题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中.返回所有这些可能的句子. 说明: 分隔时可以重复使 ...

  5. LeetCode 126. 单词接龙 II(图的BFS)

    1. 题目 给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列. 转换需遵循如下规则: 每次转换只能 ...

  6. LeetCode 127. 单词接龙(图的BFS/双向BFS)

    文章目录 1. 题目 2. 图的BFS解题 2.1 单向BFS 2.2 双向BFS !厉害了 1. 题目 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord ...

  7. LeetCode 212. 单词搜索 II(Trie树+DFS)

    1. 题目 给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻&qu ...

  8. 1160. 拼写单词

    2020-03-17 1.题目描述 拼写单词 2.解析 直接进行搜索即可 3.代码 #include <iostream> #include <cstring> #includ ...

  9. Leetcode 79.单词搜索

    Time: 20190901 Type: Medium 题目描述 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻&q ...

最新文章

  1. 清华大学提出APDrawingGAN,人脸照片秒变艺术肖像画
  2. EIGRP 实验2: 邻居关系
  3. 2.域控制器及证书颁发机构
  4. JSP(1)—基础知识
  5. 重磅!吴恩达、林轩田公开课交流群正式成立啦
  6. Vue使用axios提交表单数据
  7. Rsync的使用方法
  8. 分数相同名次排名规则C语言,如何给数据排名(相同分数相同名次)-excel篇
  9. 分布式系统架构实战demo:SSM+Dubbo
  10. WPF之DatePicker使其只能选择日期,不能输入日期
  11. model.load_state_dict(checkpoint[‘state_dict‘]) KeyError: ‘state_dict‘
  12. vue for循环中使用setTimeout没用 笔记
  13. MyBatis——13用mybatis实现银行转账
  14. USB协议 - UVC标准协议规范(二)
  15. 如何运用创客匠人微信小程序实现引流拓客?
  16. npm install 时 WARN No repository field Or No license field
  17. html实现网格布局排版整齐的表格,想要排版布局好看又整齐,用网格排一下就行了吗?...
  18. 圣邦微电子2023校招笔试
  19. 如何UNI-APP中使用iconfont彩色图标
  20. 不错的讲解业务架构,应用架构,数据架构的图

热门文章

  1. 建筑工程人转行之路续篇(五年后)
  2. IOS JSON解析之JSONKit使用
  3. Ubuntu上python打包为可执行文件方法
  4. labelme的json_to_dataset.py文件路径
  5. 修改文件属性chmod,chown,utime,truncate
  6. 上网行为管理有那些类型?
  7. 明日之后安卓版即将公测 带你全面了解
  8. PHP 创建目录时抛错,Warning: mkdir(): Permission denied in xxx.php on line 45的解决办法
  9. Win7显示屏幕亮度在哪里可以调节
  10. matlab——simulink从工作空间导入数据作为输入信号进行仿真