1297. Maximum Number of Occurrences of a Substring

Source code notebook Author Update time

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.
# @lc code=start
using LeetCode

function max_freq(s::String, max_letters::Int, min_size::Int, max_size::Int)::Int
    counts = Dict{SubString,Int}()

    for i in 1:(length(s) - min_size + 1),
        j in (i + min_size - 1):min(length(s), i + max_size + 1)

        ŝ = SubString(s, i, j)
        if length(Set(ŝ)) <= max_letters
            counts[ŝ] = get(counts, ŝ, 0) + 1
        end
    end
    return length(counts) > 0 ? maximum(values(counts)) : 0
end
# @lc code=end
max_freq (generic function with 1 method)

This page was generated using DemoCards.jl and Literate.jl.