class Solution(object):
def lengthOfLongestSubstringKDistinct(self, s, k):
"""
:type s: str
:type k: int
:rtype: int
"""
m={}
left=0
res=0
for i in range(len(s)):
if m.get(s[i]):
m[s[i]]+=1
else:
m[s[i]]=1
while len(m)>k:
m[s[left]]-=1
if m[s[left]]==0:
del m[s[left]]
left+=1
res=max(i-left+1,res)
return res