📌  相关文章
📜  查找至少重复一个字符的M个字符单词的数量(1)

📅  最后修改于: 2023-12-03 15:26:39.233000             🧑  作者: Mango

题目

给定一个字符串列表和一个整数M,编写一个函数来查找至少重复一个字符的M个字符单词的数量。

函数签名
def find_words_with_duplicate_chars(words: List[str], M: int) -> int:
    pass
参数说明
  • words:字符串列表,包含所有的单词。
  • M:整数,表示要查找至少重复一个字符的单词的长度。
返回值

返回一个整数,表示符合条件的单词的数量。

思路

遍历所有单词,对每个单词进行如下处理:

  1. 如果单词的长度小于M,则跳过该单词;
  2. 使用一个字典(dict)记录每个字符出现的次数;
  3. 如果字典中存在某个字符的次数大于1,则表示该单词中至少有一个重复的字符,增加符合条件的单词数量。
代码实现
from typing import List

def find_words_with_duplicate_chars(words: List[str], M: int) -> int:
    count = 0
    for word in words:
        if len(word) < M:
            continue
        char_freq = {}
        for char in word:
            if char in char_freq:
                char_freq[char] += 1
                if char_freq[char] > 1:
                    count += 1
                    break
            else:
                char_freq[char] = 1
    return count
测试
words = ['apple', 'banana', 'cherry', 'dog', 'elephant', 'fox', 'grape']
M = 4
assert find_words_with_duplicate_chars(words, M) == 4

words = ['apple', 'banana', 'cherry', 'dog', 'elephant', 'fox', 'grape']
M = 5
assert find_words_with_duplicate_chars(words, M) == 3

words = ['a', 'ab', 'abc', 'abcd', 'abcde']
M = 3
assert find_words_with_duplicate_chars(words, M) == 3

words = []
M = 5
assert find_words_with_duplicate_chars(words, M) == 0
总结

本题利用字典来记录字符出现的次数,非常实用。代码实现简单,但是要注意一些细节,比如判断一个单词是否符合条件时,先判断其长度是否大于等于M。