输出固定长度的不重复子串
时间: 2023-11-27 08:55:15 浏览: 36
假设要求输出长度为 k 的不重复子串,可以使用滑动窗口的方法。
具体步骤如下:
1. 定义一个长度为 k 的窗口,初始窗口左右边界都为 0。
2. 在窗口右侧不断扩展,直到窗口内的字符数量达到 k。
3. 如果发现窗口内有重复的字符,就将窗口左侧向右移动一位,直到窗口内没有重复字符。
4. 重复步骤 2 和 3,直到窗口右侧到达字符串末尾。
5. 在过程中记录所有不重复子串,输出即可。
下面是 Python 代码示例:
```python
def find_unique_substrings(s, k):
n = len(s)
unique_substrings = set()
l = r = 0
while r < n:
if r - l == k:
unique_substrings.add(s[l:r])
l += 1
elif s[r] in s[l:r]:
while s[l] != s[r]:
l += 1
l += 1
else:
r += 1
if r - l == k:
unique_substrings.add(s[l:r])
return unique_substrings
```
可以通过调用 `find_unique_substrings("abcabcabc", 3)` 来查找长度为 3 的不重复子串。输出结果为 {'abc', 'bca', 'cab'}.
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)