zoukankan      html  css  js  c++  java
  • Longest Substring With At Most K Distinct Characters

    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.

    Analyses: Map each character in the string into a index in an array times, size of that array is from ASCII size. During the process of scanning, update the frequencies of each character. Have a variable count to label how many different characters occur. Whenever the count exceeds k, we know that shorten our range: Let the left pointer move right until the frequency of the character pointed by left is 1. 

     1 public class Solution {
     2     public int lengthOfLongestSubstringKDistinct(String s, int k) {
     3         int result = 0, left = 0, n = s.length(), count = 0;
     4         int[] times = new int[256]; // map char in s to a index
     5         for (int right = 0; right < n; right++) {
     6             if (times[s.charAt(right)]++ == 0) count++;
     7             
     8             if (count > k) {
     9                 while (--times[s.charAt(left++)] > 0);
    10                 count--;
    11             }
    12             
    13             result = Math.max(result, right - left + 1);
    14         }
    15         return result;
    16     }
    17 }
     
  • 相关阅读:
    FSL
    64位MicrosoftOfficeWord加载EndnoteX7
    Lobes of the brain
    Anterior and posterior commissures
    Broadmann area (wiki)
    Broadmann分区
    matlab FDR校正
    AI图片剪切
    DPABI advanced edition 文件夹组织形式
    Frequently Asked Questions
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/6768022.html
Copyright © 2011-2022 走看看