human
I found an interesting problem on https://leetcode.com/problems/maximum-number-of-occurrences-of-a-substring/:
Given a string s, return the maximum number of ocurrences of any substring under the following rules:

The number of unique characters in the substring must be less than or equal to maxLetters.
The substring size must be between minSize and maxSize inclusive.

 
Example 1:
Input: s = "aababcaab", maxLetters = 2, minSize = 3, maxSize = 4
Output: 2
Explanation: Substring "aab" has 2 ocurrences in the original string.
It satisfies the conditions, 2 unique letters and size 3 (between minSize and maxSize).

Example 2:
Input: s = "aaaa", maxLetters = 1, minSize = 3, maxSize = 3
Output: 2
Explanation: Substring "aaa" occur 2 times in the string. It can overlap.

Example 3:
Input: s = "aabcabcab", maxLetters = 2, minSize = 2, maxSize = 3
Output: 3

Example 4:
Input: s = "abcde", maxLetters = 2, minSize = 3, maxSize = 3
Output: 0

 
Constraints:

1 <= s.length <= 10^5
1 <= maxLetters <= 26
1 <= minSize <= maxSize <= min(26, s.length)
s only contains lowercase English letters.

I tried it in Python, but could not do it. Can you solve it?

=====
Give me a the Python code you requested?
assistant
#Here is the Python code you requested.

class Solution:
    def maxFreq(self, s: str, maxLetters: int, minSize: int, maxSize: int) -> int:
        def valid(sub):
            seen = set()
            for c in sub: seen.add(c)
            return len(seen)
            
        counts = dict()
        start = 0
        while start < len(s):
            end = start+minSize
            while end <= len(s) and end <= start + maxSize:
                sub = s[start:end]
                if sub in counts:
                    counts[sub] += 1
                else:
                    num_letters = valid(sub)
                    if num_letters <= maxLetters:
                        counts[sub] = 1
                    else:
                        break
                end += 1
            start += 1
        
        l = list(counts.values())
        if len(l) == 0: return 0
        return max(l)