美文网首页
3.Longest Substring Without Repe

3.Longest Substring Without Repe

作者: 林里icer | 来源:发表于2018-03-24 21:40 被阅读0次

    1.O(n2) 可优化

    int lengthOfLongestSubstring(string s) {
            set<char> set;
            int maxnum=0;
            for(int i=0;i<s.size();i++){
                set.clear();
                set.insert(s[i]);
                maxnum = max(maxnum,1);
                for(int j=i+1;j<s.size();j++){
                    if(set.find(s[j])==set.end()){
                        set.insert(s[j]);
                        maxnum = max(maxnum,j-i+1);
                    }else{
                        break;
                    }
                }
            }
            return maxnum;
        }
    

    2.O(n) (其实是2n,可优化)

    int lengthOfLongestSubstring(string s) {
            set<char> set;
            int maxnum=0;
            int i=0,j=0;
            while(i<s.size() && j<s.size()){
                if(set.find(s[j]) == set.end()){
                    set.insert(s[j]);
                    maxnum = max(maxnum,j-i+1);
                    j++;
                }else{
                    j=++i;
                    set.clear();
                }
            }
            return maxnum;
        }
    

    3.优化
    思路:就像是一个框一样,如果碰到相同的,直接跳到不同的那里
    比如,“abcdac” 从第一个位置开始,遇到了第二个a,则i右移跳过重复的a,即i=1+1;接着移动,遇到了第二个c,则i跳过重复的c,即i=3+1

    int lengthOfLongestSubstring(string s) {
            unordered_map<char,int> map;
            int res;
            for(int i=0,j=0;j<s.size();j++){
                if(map.find(s[j])!=map.end()) i = max(map[s[j]],i);
                res = max(res,j-i+1);
                map[s[j]] = j+1;
            }
            return res;
        }
    

    相关文章

      网友评论

          本文标题:3.Longest Substring Without Repe

          本文链接:https://www.haomeiwen.com/subject/tvsccftx.html