程序在Python中查找字符数至少为k的最长子字符串的长度

假设我们有一个字符串s,其中每个字符都进行了排序,并且我们还有一个数字k,我们必须找到最长子字符串的长度,以便每个字符至少出现k次。

因此,如果输入类似于s =“ aabccddeeffghij” k = 2,则输出将为8,因为此处最长的子字符串为“ ccddeeff”,此处每个字符至少出现2次。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个功能rc()。这将需要第一

  • c:=包含所有字符及其出现的映射

  • acc:=一个新列表

  • 回答:= 0

  • 有效:=真

  • 对于第一个x,

    • 在acc的末尾插入x

    • 有效:=假

    • ans:= ans和rc(acc)的最大值

    • acc:=一个新列表

    • 如果c [x] <k,则

    • 除此以外,

    • 如果有效,则为

      • acc的返回大小

    • 除此以外,

      • ans:= ans和rc(acc)的最大值

      • 返回ans

    • 从主要方法中,执行以下操作-

    • 返回rc(通过转换s的每个字符的新列表)

    让我们看下面的实现以更好地理解-

    示例

    from collections import Counter

    class Solution:

          def solve(self, s, k):

             def rc(lst):

                c = Counter(lst)

                acc = []

                ans = 0

                valid = True

                for x in lst:

                   if c[x] < k:

                      valid = False

                      ans = max(ans, rc(acc))

                      acc = []

                   else:

                      acc.append(x)

                   if valid:

                      return len(acc)

                   else:

                      ans = max(ans, rc(acc))

                   return ans

                return rc(list(s))

    ob = Solution()s = "aabccddeeffghij"

    k = 2

    print(ob.solve(s, k))

    输入值

    "aabccddeeffghij", 2

    输出结果

    8

    以上是 程序在Python中查找字符数至少为k的最长子字符串的长度 的全部内容, 来源链接: utcz.com/z/347127.html

    回到顶部