📅  最后修改于: 2023-12-03 15:28:36.091000             🧑  作者: Mango
假设有一个字符串s,长度为n,现在需要找到长度为k的子字符串中是否存在相同的字符。
我们可以遍历字符串s,固定一个长度为k的窗口,检查该窗口内是否存在相同的字符。
具体步骤如下:
代码如下:
def exist_duplicate_char(s: str, k: int) -> bool:
for i in range(len(s) - k + 1):
d = {}
for j in range(i, i + k):
if s[j] in d:
d[s[j]] += 1
else:
d[s[j]] = 1
for key, value in d.items():
if value > 1:
return True
return False
我们可以使用一些测试样例来验证函数的正确性。
assert exist_duplicate_char("abcabc", 2) == True
assert exist_duplicate_char("abcabc", 3) == True
assert exist_duplicate_char("abcdefg", 3) == False
以上就是判断字符串中长度为k的子字符串是否存在相同字符的方法,时间复杂度为$O(nk)$,空间复杂度为$O(k)$。