美文网首页
340. Longest Substring with At M

340. Longest Substring with At M

作者: 怪味儿果叔 | 来源:发表于2017-01-05 12:17 被阅读0次

    Given a string, find the length of the longest substring T that contains at most k distinct characters.
    For example, Given s = “eceba” and k = 2, T is "ece" which its length is 3.


    int lengthOfLongestSubstringKDistinct(string s, int k){
      if(k == 0 || s.length() == 0) return 0;
      vector<int> dict(256, 0);
      int count = 0, maxLength = 0, start = 0;
      for(int i = 0; i < s.length(); i++){
        dict[s[i]]++;
        if(i == 0 || s[i] == s[i-1] || count < k) {
          if(dict[s[i]] == 1) count++;
          continue;
        }
        // k+1 distinctive char
        if((count == k && dict[s[i]] == 1)){
          maxLength = max(maxLength,i-start);
          while(start <= i){
            dict[s[start]]--;
            if(dict[s[start]] == 0) break;
            start++;
          }
          start++;
        }
      }
      return maxLength > (s.length() - start) ? maxLength : s.length() - start;
    }
    

    相关文章

      网友评论

          本文标题:340. Longest Substring with At M

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