9.最长不重复子串问题:给定一个字符串S,返回S中所有字符的最长不重复子串的长度。如果S为空,返回0。 例如: 输入:S = “abcabcbb” 输出:3 解释:最长不重复子串是"abc",长度为3。 输入:S = “bbbbb” 输出:1 解释:最长不重复子串是"b",长度为1。
时间: 2023-05-25 09:03:07 浏览: 71
寻找字符串中不包含重复字符的最长子串
解题思路:使用哈希表记录每个字符最后一次出现的位置,遍历字符串时判断当前字符是否已经出现过,若出现过,则更新不重复子串的起始位置,否则更新最长长度和当前字符的位置。
Python代码实现:
```python
def length_of_longest_substring(s):
if not s:
return 0
char_index = {}
start = 0
max_len = 0
for i in range(len(s)):
if s[i] in char_index and char_index[s[i]] >= start:
start = char_index[s[i]] + 1
else:
max_len = max(max_len, i - start + 1)
char_index[s[i]] = i
return max_len
```
时间复杂度:O(n)。
阅读全文