lintcode-最多有k个不同字符的最长子字符串

给定一个字符串,找到最多有k个不同字符的最长子字符串。


样例

例如,给定 s = "eceba" , k = 3,

T 是 "eceb",长度为 4.


class Solution {
public:
    
    int lengthOfLongestSubstringKDistinct(string s, int k) {
        if(k==0)
            return 0;
        int R=0,L=0,n=s.size();
        map m;
        int maxp=0;
        
        while(Rk){
                --m[s[L]];
                if(m[s[L]]==0)
                    m.erase(m.find(s[L]));//删除值为零(相当于在区间[L,R]该字符并未出现)的元素,避免干扰m.size()
                ++L;
            }
            maxp=max(R-L+1,maxp);
            ++R;            
        }
        return maxp;
    }
};


你可能感兴趣的:(Lintcode)