给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
时间: 2023-02-22 12:00:50 浏览: 124
python 实现给定一个字符串,找出不含有重复字符的最长子串的长度
5星 · 资源好评率100%
给定一个字符串 s,要求找出其中不含有重复字符的最长子串的长度。
这是一个经典的字符串问题,可以使用滑动窗口解决。
滑动窗口算法的思路是:
1. 定义两个指针 start 和 end,分别指向子串的开头和结尾。
2. 当 end 指向的字符在子串中出现过,就将 start 指针右移,直到该字符不在子串中。
3. 每次 end 指针右移,都需要更新子串的长度。
4. 重复步骤 2 和 3,直到 end 指针到达字符串末尾。
用代码实现该算法的方法如下:
```
int lengthOfLongestSubstring(string s) {
int start = 0, end = 0, max_len = 0;
unordered_set<char> char_set;
while (end < s.size()) {
if (char_set.count(s[end]) == 0) {
char_set.insert(s[end]);
end++;
max_len = max(max_len, end - start);
} else {
char_set.erase(s[start]);
start++;
}
}
return max_len;
}
```
这是一个时间复杂度为 O(n) 的算法,其中 n 是字符串的长度。
阅读全文