> For the complete documentation index, see [llms.txt](https://code.taozirui.com/lc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://code.taozirui.com/lc/sum.md).

# Sum

Given a string, find the length of the longest substring T that contains at mostkdistinct characters.

**Example 1:**

```
Input: 
s = "eceba", k = 2
Output: 
3
Explanation: 
T is "ece" which its length is 3.
```

**Example 2:**

```
Input: s = "aa", k = 1
Output: 
2

Explanation: 
T is "aa" which its length is 2.
```

**Thoughts:**

1. d: a hash table to record distinct value (through (len(d)).
2. every iteration compare (i - low + 1) with max value (returned value in the end)
   1. when d is over k, delete the least value entry, set low = min(d.values()) + 1

**Code:**&#x20;

```python
class Solution(object):
    def lengthOfLongestSubstringKDistinct(self, s, k):
        """
        :type s: str
        :type k: int
        :rtype: int
        """
        d, low, ans = {}, 0, 0

        for i,c in enumerate(s) :
            d[c] = i
            if len(d) > k:
                low = min(d.values())
                del d[s[low]]
                low += 1
            ans = max(i - low + 1, ans)
        return ans
```
