- 题目描述:
给定一个字符串和一个正数k,寻找一个包含k个不同字符的最长子串。如果k大于字符串中所有不同字符的个数,就返回整个字符串。 - 输入描述:
正数k
字符串s 输出描述:
字符串样例输入:
k = 2, s = ‘abcbdbdbbdcdabd’
k = 3, s = ‘abcbdbdbbdcdabd’
k = 5, s = ‘abcbdbdbbdcdabd’- 样例输出:
k = 2 时,输出 ‘bdbdbbd’
k = 3 时,输出 ‘bcbdbdbbdcd’
k = 5 时,输出 ‘abcbdbdbbdcdabd’ - 思路:
滑动窗口法。
滑动窗口法描述:滑动窗口法用一个窗口去满足问题的约束条件。一旦违反约束条件,窗口就会变得不稳定,为了消除这种不稳定,重新满足约束条件,我们需要通过增加或减小窗口的大小。
在这个问题中,遍历字符串,如果窗口中不同字符个数小于k,则将字符加入到窗口中。如果不同字符的个数大于k,则从最左边的字符开始删除,直到窗口中不同字符的个数等于k。我们反复进行这种改变窗口大小的操作,直到遍历完整个字符串。在这个过程中,如果窗口大小改变,我们就更新最大窗口值。
Python2.7
包含K个不同字符的最长子串-滑动窗口法-Python2.7
最新推荐文章于 2024-04-16 17:13:35 发布
使用滑动窗口法解决给定字符串中包含k个不同字符的最长子串问题。当k大于字符串中所有不同字符的个数时,返回整个字符串。Python2.7实现。
摘要由CSDN通过智能技术生成