1
# Runtime: 57 ms (Top 73.85%) | Memory: 14.4 MB (Top 21.39%)2
from collections import Counter6
def longestSubstring(self, s: str, k: int) -> int:7
return get_longest_substring(s, k)10
def get_longest_substring(s, k):14
low_freq_char = set([char for char, freq in c.items() if freq < k])16
if len(low_freq_char) == 0:18
# recursively split str into substr19
division_points = [i for i in range(len(s)) if s[i] in low_freq_char]22
substr_lst.append(s[: division_points[0]])24
for i in range(len(division_points) - 1):25
substr_lst.append(s[division_points[i] + 1 : division_points[i + 1]])27
substr_lst.append(s[division_points[-1] + 1 :])28
return max([get_longest_substring(substr, k) for substr in substr_lst])