class Solution {
public:
int lengthOfLongestSubstring(string s) {
int freq[256]={0};//初始化的时候滑动窗口中没有任何字符,freq记录当前字串中各个字符的出现频率
int l=0,r=-1;//滑动窗口为s[l..r]
int res=0;//记录当前找到的满足条件的最长子串的长度是多少
while(l<s.size())
{
//改变滑动窗口
if((r+1)<s.size()&&freq[s[r+1]]==0)//i+1不能越界,这里运用了短路的思想
{
r++;//右边界可以向前拓展
freq[s[r]]++;//更新频率
}
else
{
freq[s[l++]]--;//到现在为止,我们又得到了一个新的子串,经过上述处理,子串里面一定不会包含重复字符
}
res=max(res,r-l+1);//更新当前最大长度
}
return res;//返回滑动窗口最大长度
}
};
002.滑动窗口问题,LeetCode:3. 无重复字符的最长子串
最新推荐文章于 2024-08-04 16:55:19 发布