LeetCode:3. 無重複字符的最長子串

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;//返回滑動窗口最大長度
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章