pythonE. 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 例如 输入: abcabcbb 输出: 3 解释: 因为无重复字符的最长子串是"abc",所以其长度为 3。
时间: 2023-10-14 10:21:23 浏览: 56
好的,这是一道经典的字符串问题,可以使用滑动窗口来解决。具体思路如下:
1. 定义一个字典用来存储字符及其对应的下标。
2. 定义左指针 left 和最长子串的长度 max_len,初始值均为 0。
3. 遍历字符串 s,当遇到重复字符时,更新 left 的位置为重复字符的下标加 1,并更新该字符在字典中的下标为当前位置。
4. 每次遍历更新 max_len 的值为当前子串长度和历史最大值的较大值。
5. 遍历结束后,返回 max_len 的值即可。
下面是 Python 代码实现:
```python
def lengthOfLongestSubstring(s: str) -> int:
char_dict = {} # 存储字符及其对应的下标
left = 0 # 左指针
max_len = 0 # 最长子串的长度
for i, c in enumerate(s):
if c in char_dict and char_dict[c] >= left:
left = char_dict[c] + 1 # 更新左指针位置
char_dict[c] = i # 更新字符的下标
max_len = max(max_len, i - left + 1) # 更新最长子串的长度
return max_len
```
对于输入 "abcabcbb",上述代码将返回 3,符合预期。
相关问题
给定一个字符串 s,请你找出其中不含有重复字符的 最长子串 的长度
给定一个字符串 s,我们需要找出其中不含有重复字符的最长子串的长度。可以使用滑动窗口的方法来解决这个问题。
滑动窗口是一种常用的解决子串或子数组问题的方法。它通过维护一个窗口,来遍历整个字符串。具体步骤如下:
1. 定义两个指针,left 和 right,分别表示窗口的左边界和右边界。
2. 初始化最长子串的长度为 0,定义一个集合 set 来存储窗口中的字符。
3. 遍历字符串 s,不断移动右指针 right,并将对应的字符加入到集合 set 中。
4. 如果集合 set 中已经存在当前字符,表示出现了重复字符,需要移动左指针 left,并将对应的字符从集合 set 中移除,直到集合 set 中不再包含重复字符。
5. 在每次移动左指针 left 和右指针 right 后,更新最长子串的长度为 max(maxLength, right - left + 1)。
6. 重复步骤 3-5,直到遍历完整个字符串 s。
最终得到的 maxLength 就是不含有重复字符的最长子串的长度。
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度
题目描述:
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
解题思路:
使用滑动窗口的思想,维护一个窗口,窗口内的元素不重复,每次移动右边界,如果右边界的元素在窗口内出现过,则移动左边界,直到窗口内不再有重复元素。
代码实现:
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)