记录自己刷题

class Solution {
public:
int lengthOfLongestSubstring(string s) {
// 如果长度为0, 直接返回最后的结果
if (s.size() == 0) return 0;
// set存滑动窗口
unordered_set<char> window;
// 左边定义0开始
int left = 0, n = s.size();
// 最大长度
int max_len = 0;
for (int i = 0; i < n; i ++)
{
// 如果在window中找到了set中已经有的重复元素
while (window.find(s[i]) != window.end())
{
// 提出滑动窗口最左边的元素
window.erase(s[left]);
// 同时左边界移动
left ++;
}
// 依次更新最大长度
max_len = max(max_len, i - left + 1);
// 将新的字符放入set
window.insert(s[i]);
}
return max_len;
}
};
该博客介绍了如何使用滑动窗口算法解决C++编程中找到字符串中最长无重复字符子串的问题。通过使用unordered_set作为滑动窗口,动态调整窗口大小,实现了在O(n)的时间复杂度内找出最长子串的长度。
907

被折叠的 条评论
为什么被折叠?



