📜  算法测验| SP竞赛3 |问题2(1)

📅  最后修改于: 2023-12-03 15:41:09.869000             🧑  作者: Mango

算法测验 | SP竞赛3 | 问题2
介绍

本次算法测验是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且所有字符都不相同的最长连续子串。如果题目要求不同的条件,需要对程序进行相应的修改。