问题描述:给定一个字符串s,找到至多包含k个不同字符得最长子串的长度。
比如s="cebea",k=2,那么输出结果就是3,因为此时"ebe"满足条件:至多包含两个不同字符,且子串最长
比如s="world",k=4,那么输出结果就是4,因为"worl"和"orld"满足条件:至多包含4个不同字符,且子串最长
class Solution: def lengthOfLongestSubstringKDistinct(self, s, k): tmp = 0 #用于记录满足条件得最大值 for i in range(1,len(s)+1):#步长从1到len(s)+1 for j in range(len(s)-i+1):#窗口左端 print(s[j:j+i]) if len(set(s[j:j+i])) == k:#如果窗口中取集合后的不同字符就是k个 tmp = max(tmp,i)#更新tmp的值 print("tmp:{}".format(tmp)) return tmp #最后返回即可
过程:
c
e
b
e
a
ce
tmp:2
eb
tmp:2
be
tmp:2
ea
tmp:2
ceb
ebe
tmp:3
bea
cebe
ebea
cebea