函数 求一个字符串中最长的没有重复的字符串。不可使用STL模板
时间: 2024-10-16 14:15:35 浏览: 13
基于C++字符串替换函数的使用详解
5星 · 资源好评率100%
这个问题可以使用滑动窗口和哈希集合的数据结构来解决。这里是一个简单的Python解决方案,不使用STL模板:
```python
def length_of_longest_substring(s):
# 初始化两个指针和一个空集合
left = right = 0
char_set = set()
# 初始化最长无重复字符子串长度为0
max_length = 0
while right < len(s):
# 如果当前字符不在集合中,将其添加并更新右边界
if s[right] not in char_set:
char_set.add(s[right])
right += 1
max_length = max(max_length, right - left)
else:
# 如果当前字符在集合中,移除左边界对应的字符
char_set.remove(s[left])
left += 1
return max_length
# 示例
s = "pwwkew"
print(length_of_longest_substring(s)) # 输出:3,因为最长无重复子串是"wke"
```
这个函数通过维护一个左指针和右指针,以及一个包含已遇到字符的集合,不断尝试将右指针向右移动,如果遇到重复字符则移动左指针,直到找到最长的无重复子串。
阅读全文