Leetcode 1423 Solution

This article provides solution to leetcode question 1423 (maximum-number-of-occurrences-of-a-substring)

https://leetcode.com/problems/maximum-number-of-occurrences-of-a-substring

Solution

class Solution:
    def maxFreq(self, s: str, maxLetters: int, minSize: int, maxSize: int) -> int:
        l = 0
        r = 0

        str_cnt = collections.defaultdict(int)
        ch_cnt = collections.defaultdict(int)

        while r < len(s):
            ch_cnt[s[r]] += 1

            if r - l + 1 > minSize:
                if s[l] in ch_cnt and ch_cnt[s[l]] == 1:
                    del ch_cnt[s[l]]
                else:
                    ch_cnt[s[l]] -= 1
                l += 1

            if r - l + 1 == minSize and len(ch_cnt) <= maxLetters:
                str_cnt[s[l:r + 1]] += 1

            r += 1

        best_str_cnt = 0
        best_str = ""
        for s, cnt in str_cnt.items():
            if cnt > best_str_cnt:
                best_str_cnt = cnt
                best_str = s
        return best_str_cnt