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


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

理解问题

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

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

上述问题的逻辑

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

算法

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

  • 步骤 2 - 定义一个函数来计算输入字符串中子字符串的匹配位置。并在该函数内部传递三个参数,如 input_str、K 和 substr。

  • 步骤 3 - 然后初始化一个名为 counter 的变量来记录子字符串的计数。

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

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

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

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

示例

# Initialize the input string
input_str = "aaabddhaaabnsnsaaabkskd"
K = 4
# Initialize the substring
substr = "aaab"
# Define the function to count the matching string
def count_positions(input_str, K, substr):
   # Initialize the counter with 0
   counter = 0
   # Iterate the input string
   for i in range(len(input_str) - K + 1):
      str_size = input_str[i:i+K]
      if str_size == substr:
         counter += 1
   return counter
# Call the above function
Output = count_positions(input_str, K, substr)
print(f"The substring '{substr}' with length {K} is matching at: '{Output}' positions")

输出

The substring 'aaab' with length 4 is matching at: '3' positions

复杂度

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

结论

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

更新于: 2023年10月17日

114 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.