Python程序:统计给定字符串中出现次数超过一次的k长度子串


假设我们有一个字符串s和一个数字k,我们需要找到s中出现次数超过一次的k长度子串的数量。

例如,如果输入是s = "xxxyyy", k = 2,则输出为2

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

  • seen := 一个新的列表
  • 对于 i 从 0 到 s 的大小 - k,执行:
    • t := s 的子串(从索引 i 到 i + k - 1)
    • 将 t 添加到 seen 的末尾
  • mp := 一个映射,包含 seen 中所有不同元素及其出现的次数
  • 返回 mp 中每个元素出现次数的总和,其中出现次数大于1

让我们看看下面的实现来更好地理解:

示例

在线演示

class Solution:
   def solve(self, s, k):
      from collections import Counter
      seen = []
      for i in range(len(s) - k + 1):
         t = s[i : i + k]
         seen.append(t)
         s = Counter(seen)
      return sum(1 for x in s.values() if x > 1)
ob = Solution()
print(ob.solve("xxxyyy",2))

输入

"xxxyyy",2

输出

2

更新于:2020年10月7日

164 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告