📅  最后修改于: 2023-12-03 15:41:09.869000             🧑  作者: Mango
本次算法测验是SP竞赛3的第二个问题,要求实现一个程序,对于给定的一个字符串和一个数字k,找到长度为k的最长连续子串,并输出该子串。
我们可以使用滑动窗口的方法来解决这个问题。
具体来说,我们可以维护一个窗口,窗口的大小为k,然后遍历整个字符串。对于每个位置,我们将该位置及其后面的k-1个字符组成当前的子串。然后与之前维护的最长的子串比较,如果当前子串更长,就更新最长子串。最后输出最长子串即可。
def find_longest_substring(s: str, k: int) -> str:
n = len(s)
ans = ""
for i in range(n-k+1):
substring = s[i:i+k]
if len(substring) == k and len(set(substring)) == k:
ans = substring
return ans
需要注意的是,这个程序只能找到长度为k且所有字符都不相同的最长连续子串。如果题目要求不同的条件,需要对程序进行相应的修改。