1160 拼写单词(计数)
发布日期:2021-05-07 21:53:23 浏览次数:25 分类:精选文章

本文共 1117 字,大约阅读时间需要 3 分钟。

为了解决这个问题,我们需要判断词汇表中的每个单词是否可以用给定的字符集合中的字母来拼写,并计算这些单词的长度之和。

方法思路

  • 统计字符频率:首先,我们统计字符集合中每个字母的出现次数。
  • 检查每个单词:对于每个单词,统计它的每个字母出现的次数,并检查这些字母是否在字符集合中,并且出现次数足够。
  • 计算总长度:如果单词可以由字符集合拼写,则将其长度加到总和中。
  • 具体步骤如下:

  • 使用 Counter 统计字符集合中的每个字母的出现次数。
  • 对于每个单词,使用 Counter 统计其每个字母的出现次数。
  • 检查每个单词的每个字母是否在字符集合中,并且出现次数不超过字符集合中的次数。
  • 如果满足条件,将单词的长度加到总和中。
  • 解决代码

    from typing import List
    from collections import Counter
    class Solution:
    def countCharacters(self, words: List[str], chars: str) -> int:
    cnt = Counter(chars)
    total = 0
    for word in words:
    word_counter = Counter(word)
    valid = True
    for char in word_counter:
    if word_counter[char] > cnt[char]:
    valid = False
    break
    if valid:
    total += len(word)
    return total

    代码解释

  • 统计字符频率:使用 Counter 统计字符集合 chars 中每个字母的出现次数,存储在 cnt 中。
  • 遍历每个单词:对于每个单词,使用 Counter 统计其每个字母的出现次数,存储在 word_counter 中。
  • 检查单词有效性:遍历 word_counter,检查每个字母是否在 cnt 中,并且出现次数不超过 cnt 中的次数。如果有任何字母不满足条件,标记为无效。
  • 累加长度:如果单词有效,将其长度加到 total 中。
  • 返回结果:返回所有有效单词长度的总和。
  • 这种方法确保了每个单词都能由字符集合中的字母拼写而成,并且字符使用次数符合要求,保证了算法的正确性和高效性。

    上一篇:python中的all函数
    下一篇:1171 从链表中删去总和值为零的连续节点(前缀和、分析)

    发表评论

    最新留言

    关注你微信了!
    [***.104.42.241]2025年04月06日 12时09分53秒