📅  最后修改于: 2023-12-03 15:11:20.302000             🧑  作者: Mango
在程序设计中,有时需要处理由非重复字符组成的给定字符串,这种字符串被称为“非重复字符串”。本文将介绍如何判断字符串中是否有重复字符,以及如何找出最长的非重复字符子串。
判断字符串中是否有重复字符,可以使用哈希集合的方法。具体步骤如下:
以下是 Python 代码示例:
def has_duplicate_chars(s: str) -> bool:
char_set = set()
for c in s:
if c in char_set:
return True
else:
char_set.add(c)
return False
找出最长的非重复字符子串,可以使用滑动窗口的方法。具体步骤如下:
left
和 right
,分别指向滑动窗口的左右两端。char_set
,表示窗口中的字符集合。right
指向的字符不在 char_set
中时,把该字符加入 char_set
中,并把窗口右端右移一位。right
指向的字符已经在 char_set
中时,把左端右移一位,并把对应的字符从 char_set
中删除。以下是 Python 代码示例:
def longest_nonrepeat_substring(s: str) -> int:
left, right = 0, 0
char_set = set()
max_len = 0
while right < len(s):
if s[right] not in char_set:
char_set.add(s[right])
right += 1
max_len = max(max_len, right - left)
else:
char_set.remove(s[left])
left += 1
return max_len
由非重复字符组成的给定字符串是程序设计中常见的一种数据结构。判断字符串中是否有重复字符和找出最长的非重复字符子串是解决这类问题的两个常见方法。本文提供了哈希集合和滑动窗口两种实现方式。