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

給定一個字符串,找出不含有重複字符的最長子串的長度。

示例:

給定 "abcabcbb" ,沒有重複字符的最長子串是 "abc" ,那麼長度就是3。

給定 "bbbbb" ,最長的子串就是 "b" ,長度是1。

給定 "pwwkew" ,最長子串是 "wke" ,長度是3。請注意答案必須是一個子串"pwke" 是 子序列  而不是子串。


循環利用map,映射當前下標,沒找到,push進去,找到了,break計算長度是否大於前面map長度最大值;從遇到重複元素的(map映射)下標n開始不包括n,清空map之後重複進行操作。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        if(s.length()==1||s.length()==0) return s.length();
        map<char,int>my_map;
        int l_max=0;
        int n=s.length();
        int i=0;
        for(;i<n;i++){
            if(!my_map.count(s[i])) {
                my_map[s[i]]=i;
                if(my_map.size()>=l_max) l_max=my_map.size();
            }
            else{
                i=my_map[s[i]];my_map.clear();
            }
        }
        return l_max;
    }
};

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