📌  相关文章
📜  Python – N 大小的子字符串,具有 K 个不同的字符(1)

📅  最后修改于: 2023-12-03 14:46:07.118000             🧑  作者: Mango

Python - N 大小的子字符串,具有 K 个不同的字符

在Python中,如果给定一个字符串和正整数K,则可以找到长度为N的子字符串,该子字符串具有恰好K个不同的字符。以下是一个有效的Python示例来实现此功能。

def find_k_length_substrings(string, k, n):
    substrings = []
    for i in range(len(string)-n+1):
        sub = string[i:i+n]
        if len(set(sub)) == k:
            substrings.append(sub)
    return substrings

# 测试
string = "abcde"
k = 3
n = 2
substrings = find_k_length_substrings(string, k, n)
print(substrings)

此示例中,函数“find_k_length_substrings”需要三个参数:字符串,要找的子字符串的长度“n”和要查找的具有不同字符数“k”的子字符串的数量。此外,该函数还定义了一个名为“substrings”的列表,以将找到的子字符串收集在一起。

接下来,该函数通过一个循环来迭代字符串,如下所示:

for i in range(len(string)-n+1):

循环将从零开始并逐渐递增,直到长度为 “n”的子字符串可以在字符串中查找到。这是通过减去“n-1”的长度来实现的。

在循环中,该函数使用“i”索引来获取一个名为“sub”的子字符串:

sub = string[i:i+n]

这是通过使用字符串切片从字符串中获取一个名为“sub”的子字符串实现的。只需传递起始索引(“i”)和截止索引(“i + n”)即可。

接下来,函数将采用以下方式检查子字符串中是否有与“k”给定的值相同的不同字符数:

if len(set(sub)) == k:
    substrings.append(sub)

如果子字符串具有正确的差异字符数,则该函数将其添加到“substrings”列表中。

最后,该函数返回“substrings”列表,其中包含所有符合条件的子字符串。在本例中,如果您运行此程序,则输出将为:

['abc', 'bcd', 'cde']

这是找到长度为“2”的所有子字符串,并且每个子字符串有恰好3个不同的字符的结果。

这是一个有效的Python示例,可用于在字符串中查找具有确定长度和不同字符数的子字符串。