Skip to main content
LeetCode 828, Hard. Topics: Hash Table, String, Dynamic Programming. View on LeetCode. Generate this problem as a practice environment: tested reference solution, 24 parametrized pytest cases, and a playground notebook:

Problem

<p>Let’s define a function <code>countUniqueChars(s)</code> that returns the number of unique characters in <code>s</code>.</p> <ul> <li>For example, calling <code>countUniqueChars(s)</code> if <code>s = “LEETCODE”</code> then <code>“L”</code>, <code>“T”</code>, <code>“C”</code>, <code>“O”</code>, <code>“D”</code> are the unique characters since they appear only once in <code>s</code>, therefore <code>countUniqueChars(s) = 5</code>.</li> </ul> <p>Given a string <code>s</code>, return the sum of <code>countUniqueChars(t)</code> where <code>t</code> is a substring of <code>s</code>. The test cases are generated such that the answer fits in a 32-bit integer.</p> <p>Notice that some substrings can be repeated so in this case you have to count the repeated ones too.</p>

Examples

Constraints

  • 1 <= s.length <= 10^5
  • s consists of uppercase English letters only.

Solution

Reference implementation from solution.py on GitHub, full suite in test_solution.py:

Complexity

Tags

Last modified on September 7, 2026