Python - 长度为 K 的子字符串匹配的位置数
在给定的问题陈述中,我们必须使用 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 功能来获得获取子字符串位置数量的有效解决方案。