• LeetCode-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.

    Analysis:

    Adding ith char into current substring, keep tracking the number of each char in the current substring, if the distinct number constraint is violated, we move the start forward until the contraint is satisfied.

    Solution:

     1 public class Solution {
     2     public int lengthOfLongestSubstringKDistinct(String s, int k) {
     3         if (s.isEmpty() || k==0) return 0;
     4         
     5         HashMap<Character,Integer> charMap = new HashMap<Character,Integer>();
     6         int start = 0, end = 1, distNum = 1;
     7         charMap.put(s.charAt(0),1);
     8         
     9         int res = 1;
    10         while (end<s.length()){
    11             char cEnd = s.charAt(end);
    12             if (charMap.containsKey(cEnd)){
    13                 charMap.put(cEnd,charMap.get(cEnd)+1);
    14             } else {
    15                 charMap.put(cEnd,1);
    16                 distNum++;
    17                 while (distNum>k){
    18                     char cStart = s.charAt(start);
    19                     int val = charMap.get(cStart)-1;
    20                     if (val==0){
    21                       distNum--;
    22                       charMap.remove(cStart);
    23                     } else charMap.put(cStart,val);
    24                     start++;
    25                 }
    26             }
    27             end++;
    28             res = Math.max(end-start,res);
    29         }
    30         return res;
    31     }
    32 }
  • 相关阅读:
    第二阶段冲刺——个人总结05
    购书最低价
    第二阶段冲刺——个人总结04
    第二阶段冲刺——个人总结03
    第二阶段冲刺——个人总结02
    学习进度条——十三周
    第二阶段冲刺——个人总结01
    android模拟器
    unigui导出TMS.Flexcel【5】
    unigui+fastreport 打印【4】
  • 原文地址:https://www.cnblogs.com/lishiblog/p/5740921.html
Copyright © 2020-2023  润新知