题目:
题解:
class Solution:def longestSubstring(self, s1: str, k: int) -> int:if k == 1: return len(s1)n = len(s1)res = 0for c in range(1, len(set(s1)) + 1):# 滑窗中字母种类个数恰好为 cfreq = Counter()l = cnt = tcnt = 0 for r, ch in enumerate(s1):if freq[ch] == 0:cnt += 1tcnt += 1if freq[ch] == k - 1:cnt -= 1freq[ch] += 1while tcnt > c:lch = s1[l]if freq[lch] == k: cnt += 1if freq[lch] == 1:tcnt -= 1cnt -= 1freq[lch] -= 1l += 1if tcnt == c and cnt == 0:res = max(res, r - l + 1)return res