Python - 长度为 K 的子字符串匹配的位置数

pythonserver side programmingprogramming

在给定的问题陈述中,我们必须使用 Python 编程找到长度为 K 的子字符串匹配的位置数。因此,此问题有助于从输入字符串中获取所有长度为 K 的子字符串。

理解问题

手头的问题需要一个包含一些子字符串的输入字符串。因此,我们必须显示给定字符串中子字符串匹配的位置数。例如,让我们看下面的图片 -

在上图中,我们可以看到 K 的值为"aaab",因此在计算此字符串后,输出将为 4,因为该字符串在输入字符串中出现了四次。

上述问题的逻辑

为了解决这个问题,我们将定义子字符串和子字符串 K 的长度。然后我们将从给定的字符串中提取子字符串并与定义的字符串匹配,如果它们都匹配,则增加计数值。最后返回 count 的值以显示长度为 K 的子字符串匹配的位置数。

算法

  • 步骤 1 − 首先将输入字符串、K 的值和子字符串的变量初始化为 input_str、K 和 substr。

  • 步骤 2 − 定义函数以计算输入字符串中子字符串的匹配位置。并且在此函数中传递三个参数,即 input_str、K 和 substr。

  • 步骤 3 - 然后启动名为 counter 的变量,以记录子字符串的数量。

  • 步骤 4 - 将在字符串的索引上启动循环,直到字符串的长度 - K + 1。这将表示子字符串的大小。

  • 步骤 5 - 在循环内部,我们将从字符串中提取 K。

  • 步骤 6 - 接下来,将提取的字符串与给定的子字符串进行比较。如果它们都相同,那么我们将计数器值增加 1。

  • 步骤 7 - 迭代完整字符串后,我们将返回最终计数器值以显示在控制台上。

示例

# 初始化输入字符串
input_str = "aaabddhaaabnsnsaaabkskd"
K = 4
# 初始化子字符串
substr = "aaab"
# 定义函数来计算匹配的字符串
def count_positions(input_str, K, substr):
# 用 0 初始化计数器
counter = 0
# 迭代输入字符串
    for i in range(len(input_str) - K + 1):
    str_size = input_str[i:i+K]
    if str_size == substr:
        counter += 1
    return counter
# 调用上述函数
输出 = count_positions(input_str, K, substr)
print(f"长度为 {K} 的子字符串 '{substr}' 在以下位置匹配:'{Output}'")

输出

长度为 4 的子字符串 'aaab' 在以下位置匹配:'3'

复杂度

查找长度为 K 的子字符串匹配的位置数的时间复杂度为 O(N),这里 N 是给定 input_str 的长度。代码在字符串上从 0 迭代到 len(input_str) - K +1。

结论

我们已经使用 Python 成功解决了给定的问题。我们使用了基本的 Python 功能来获得获取子字符串位置数量的有效解决方案。


相关文章