# 1:生成20个随机小写字母构成的字符串 # 2:找出这个字符串中最长的不包含重复字符的子串
时间: 2024-02-23 20:01:47 浏览: 20
好的,我来回答你的问题。
第一个问题,可以使用Python的random和string模块来实现:
```python
import random
import string
random_string = ''.join(random.choices(string.ascii_lowercase, k=20))
print(random_string)
```
这里使用了random.choices来随机选择小写字母,string.ascii_lowercase指定了小写字母集合,k参数指定了随机选择的字符数量。
第二个问题,可以使用滑动窗口和集合来实现:
```python
def longest_substring(s: str) -> str:
left, right = 0, 0
max_len = 0
max_str = ''
current_set = set()
while right < len(s):
if s[right] not in current_set:
current_set.add(s[right])
right += 1
if len(current_set) > max_len:
max_len = len(current_set)
max_str = s[left:right]
else:
current_set.remove(s[left])
left += 1
return max_str
```
这里使用left和right指针来表示滑动窗口的左右边界,current_set用来保存当前窗口内的字符集合。当右边界的字符不在集合内时,右边界向右移动并加入集合;当右边界的字符已经在集合内时,左边界向右移动并从集合中移除左侧的字符。在移动过程中,记录最大的子串长度和子串内容。