美文网首页
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