题目描述: 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。请给出python代码实现的答案
时间: 2023-12-30 09:05:41 浏览: 82
js代码-给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
下面是使用Python实现的代码:
```python
def lengthOfLongestSubstring(s):
# 使用一个字典来记录字符的索引位置
char_map = {}
# 初始化左边界和最大长度
left = 0
max_length = 0
for right in range(len(s)):
# 如果字符在字典中且在当前窗口内
if s[right] in char_map and char_map[s[right]] >= left:
# 移动左边界到重复字符的下一个位置
left = char_map[s[right]] + 1
# 更新字符的索引位置
char_map[s[right]] = right
# 更新最大长度
max_length = max(max_length, right - left + 1)
return max_length
# 测试示例
print(lengthOfLongestSubstring("abcabcbb")) # 输出 3
print(lengthOfLongestSubstring("bbbbb")) # 输出 1
print(lengthOfLongestSubstring("pwwkew")) # 输出 3
```
这段代码使用滑动窗口的思想,通过维护一个窗口来找出最长的不重复子串。在遍历字符串的过程中,使用一个字典`char_map`来记录每个字符的索引位置。如果遇到重复的字符,移动左边界到重复字符的下一个位置,并更新最大长度。最后返回最大长度即可。
阅读全文