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;//返回滑動窗口最大長度
}
};
LeetCode:3. 無重複字符的最長子串
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.