Given a digit string s, return the number of unique substrings of s where every digit appears the same number of times.
Example 1:
Input: s = "1212"
Output: 5
Explanation: The substrings that meet the requirements are "1", "2", "12", "21", "1212".
Note that although the substring "12" appears twice, it is only counted once.
Example 2:
Input: s = "12321"
Output: 9
Explanation: The substrings that meet the requirements are "1", "2", "3", "12", "23", "32", "21", "123", "321".
Constraints:
1 <= s.length <= 1000
s consists of digits.
Solutions
Solution 1
Thinking
Count distinct substrings whose present digits all share one frequency. \(n\le 1000\) gives \(O(n^2)\) substrings; scanning each from scratch is cubic.
Prefix counts of the ten digits give a frequency vector in \(O(1)\); we then check that the nonempty frequencies form a singleton. A set stores the substrings themselves.
Enumerate \([i,j]\) and insert \(s[i:j+1]\) when the prefix-difference test passes.