c++ 使用滑動窗口求無重複字符串最長子串

這道題我最開始的思路是用暴力法,直接使用兩次循環來進行,計算後看了大神的解答,使用了滑動窗口。

其實滑動窗口和暴力法的區別是滑動窗口比較的是窗口內的元素是否重複,來確定最大長度。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        set<char>cont;
        int i=0,j=0,n=0,c=0;
        n=s.size();
        while(i<n&&j<n)
        {
            if(cont.find(s[j])!=cont.end())
            {
                cont.erase(s[i++]);
            }
            else
            {
                cont.insert(s[j++]);
                c=max(c,j-i);
            }
        }
        return c;
    }
};

 

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