LeetCode340: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.


这道题是之前那道LeetCode159:Longest Substring with At Most Two Distinct Characters的拓展,直接将2换成k就行了。

class Solution(object):
    def lengthOfLongestSubstringKDistinct(self, s, k):
        start, end = 0, 0
        max_length = 0
        buff_dict = {}
        for c in s:
            buff_dict[c] = buff_dict.get(c, 0) + 1
            # while have more than k, we keep removing from i
            while len(buff_dict) > k:
                buff_dict[s[start]] -= 1
                if buff_dict[s[start]] == 0:
                    del buff_dict[s[start]]
                start += 1
            max_length = max(max_length, end - start+1)
            end += 1
        return max_length

 

你可能感兴趣的:(LeetCode)