📅  最后修改于: 2023-12-03 15:40:39.665000             🧑  作者: Mango
给定一个字符串和一个正整数k,找到该字符串中每个字符出现频率都小于等于k的最长子串。
例如,给定字符串"aabab"和k=2,结果为"ababa"。
def max_substring(s: str, k: int) -> str:
left = right = max_len = 0
freq = {}
while right < len(s):
freq[s[right]] = freq.get(s[right], 0) + 1
right += 1
while len(freq) > k:
freq[s[left]] -= 1
if freq[s[left]] == 0:
freq.pop(s[left])
left += 1
max_len = max(max_len, right - left)
return s[left:left+max_len]