技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

Python - N 个重复的 K 字符的非重叠出现

pythonserver side programmingprogramming

在本文中,我们必须使用 Python 查找 N 个重复的 K 字符的非重叠出现。在 Python 中使用字符串时,这类问题非常常见。

理解问题

当前的问题是查找 N 个重复的 K 字符的非重叠出现。简单来说,我们将得到一个字符串,该字符串中会有一些重复的字符,因此我们必须找出特定字符的出现并显示其计数。这里 N 是给定输入字符串中的任何字符,K 是字符 N 的计数。

上述问题的逻辑

为了解决这个问题,我们将使用循环遍历给定的字符串,然后我们将检查 N 和 K 的值。并检查具有 N、K 次的子字符串。并使用一个对象来存储这些出现的次数。

算法

  • 步骤 1 − 首先定义一个名为 non_overlapping() 的函数,在这个函数中我们将传递三个参数,即 n、k 和 the_str。这里 n 是字符,k 是 n 的字符数,the_str 是输入字符串

  • 步骤 2 − 启动一个名为 result 的变量,该变量将用于跟踪非重叠出现的次数。

  • 步骤 3 − 接下来,我们将借助分隔符"B"拆分给定的字符串 the_str。这将创建一个子字符串列表。

  • 步骤 4 - 将对列表中的每个子字符串启动一个循环。

  • 步骤 5 - 对于每个子字符串,我们将使用 lambda 函数内的 filter 函数过滤掉字符 N 的出现次数。这里将使用 lambda 函数来检查每个字符是否等于 K。

  • 步骤 6 - 现在将过滤后的结果转换为列表,然后计算长度。

  • 步骤 7 - 然后我们将长度除以 K 以检查当前子字符串中不重叠出现的次数。

  • 步骤 8 - 之后将 count 的值添加到 result 变量中。

  • 步骤 9 - 当迭代过程结束时,最终不重叠出现的次数将保存在 result 变量中。

示例

# 定义函数
def non_overlapping(n, k, the_str):
    # 初始化结果object
    result = 0
    # 遍历字符串
   	for sub in the_str.split('B'):
      result += len(list(filter(lambda x: x == k, sub))) // n
   return result

the_str = 'AABBCCDDAABBGGHH'
K = "A"
N = 2  
print("输入字符串是:" + str(the_str))
Output = non_overlapping(N, K, the_str)
print("非重叠出现结果:" + str(Output))

输出

输入字符串是:AABBCCDDAABBGGHH
非重叠出现结果:2

复杂度

查找 N 重复 K 字符的非重叠出现的时间复杂度为 O(m),这里 m 是给定输入字符串的长度。对于每次迭代,我们都会过滤掉字符 A 的出现次数,并计算 A 出现的次数 K = 2 次。

结论

我们已经使用 Python 实现了查找 N 重复 K 字符的非重叠出现的解决方案。我们用一种非常直接的方法来解决这个问题,时间复杂度为 O(m)。


相关文章