程序在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
    猜你喜欢