📅  最后修改于: 2023-12-03 15:12:41.719000             🧑  作者: Mango
编写一个程序,该程序计算一个字符串中出现的子字符串的数量,并且这些子字符串的长度为k。子字符串可以重叠。
第一行包含一个整数t,表示测试用例的数量。 每个测试用例包含两行,第一行包含一个字符串s,第二行包含一个整数k。
对于每个测试用例,输出一个新行包含s中长度为k的子字符串的数量。
2
abcdcdc
2
abcdabcd
3
2
2
题目要求计算一个字符串中长度为k的子字符串出现的次数。因为子字符串可以重叠出现,所以对于字符串中的每个长度为k的子串,都需要判断是否与目标子串相同,如果相同则计数器加1。 本题的算法时间复杂度为O(n-k+1),其中n为字符串的长度。
t = int(input())
while t > 0:
s = input().strip()
k = int(input().strip())
count = 0
for i in range(len(s) - k + 1):
if s[i:i + k] == s[:k]:
count += 1
print(count)
t -= 1