Back to all solutions

#2168 - Unique Substrings With Equal Digit Frequency

Problem Description

Given a digit string s, return the number of unique substrings of s where every digit appears the same number of times.

Solution

/**
 * @param {string} s
 * @return {number}
 */
var equalDigitFrequency = function(s) {
  const uniqueSubstrings = new Set();
  const n = s.length;

  for (let i = 0; i < n; i++) {
    const digitCount = new Map();

    for (let j = i; j < n; j++) {
      const digit = s[j];
      digitCount.set(digit, (digitCount.get(digit) || 0) + 1);

      if (hasEqualFrequency(digitCount)) {
        uniqueSubstrings.add(s.substring(i, j + 1));
      }
    }
  }

  return uniqueSubstrings.size;

  function hasEqualFrequency(counts) {
    const frequencies = Array.from(counts.values());
    return frequencies.every(freq => freq === frequencies[0]);
  }
};