Skip to main content

Check if Number Has Equal Digit Count and Digit Value - Solution & Explanation

EasyHash TableStringCounting13 min readAsked at: Google, Jpmorgan
Practice this problem

Problem Statement

You are given a 0-indexed string num of length n consisting of digits.

Return true if for every index i in the range 0 <= i < n, the digit i occurs num[i] times in num, otherwise return false.

 

Example 1:

Input: num = "1210"
Output: true
Explanation:
num[0] = '1'. The digit 0 occurs once in num.
num[1] = '2'. The digit 1 occurs twice in num.
num[2] = '1'. The digit 2 occurs once in num.
num[3] = '0'. The digit 3 occurs zero times in num.
The condition holds true for every index in "1210", so return true.

Example 2:

Input: num = "030"
Output: false
Explanation:
num[0] = '0'. The digit 0 should occur zero times, but actually occurs twice in num.
num[1] = '3'. The digit 1 should occur three times, but actually occurs zero times in num.
num[2] = '0'. The digit 2 occurs zero times in num.
The indices 0 and 1 both violate the condition, so return false.

 

Constraints:

  • n == num.length
  • 1 <= n <= 10
  • num consists of digits.

Approach Overview

Problem Overview: You are given a numeric string num. For each index i, the digit at that position represents how many times digit i must appear in the entire string. The task is to check whether the actual frequency of every digit matches the value stored at its corresponding index.

Approach 1: Count Digits with a Frequency Array (O(n) time, O(1) space)

The direct solution counts how often each digit appears, then verifies whether those counts match the values in the string. Iterate once through num and update a frequency array of size 10 where freq[d] stores how many times digit d occurs. Then iterate again through the string: for index i, convert num[i] to an integer and compare it with freq[i]. If any index fails the check, return false. If all positions match, the number satisfies the condition. The array size is constant (digits 0–9), so the space complexity stays O(1). This approach relies on simple counting and works well because the digit range is fixed.

Approach 2: Count and Verify In-place (O(n^2) time, O(1) space)

This version avoids storing a separate frequency structure. For each index i, scan the entire string and count how many times digit i appears. Compare that count directly with num[i]. If any mismatch occurs, return false. Since each position triggers a full scan, the algorithm performs up to n scans of length n, giving O(n^2) time complexity. The advantage is minimal memory usage—no extra arrays or hash table structures. The logic is simple but slower for longer inputs.

Recommended for interviews: The frequency array solution is the expected answer. It demonstrates efficient use of string traversal and constant-size counting structures, achieving linear time with minimal space. Showing the naive repeated-count idea first can demonstrate problem understanding, but interviewers typically want the O(n) counting approach.

Approach 1: Count Digits with a Frequency Array

Use an array to count the frequency of each digit (0-9) in the string. Check if each digit i matches the count specified at num[i].

This C solution uses an array to track the frequency of each digit. It iterates over the input string to populate this frequency array and then checks each digit against the expected count.

Code

C

C++

Java

Python

C#

JavaScript

Complexity

Time Complexity: O(n), where n is the length of the string.
Space Complexity: O(1), as the array size is constant (10 elements).

Try this approach in the editor →

Approach 2: Count and Verify In-place

Instead of storing results in an array, count digits as needed directly against the requirement in the input string.

This approach counts occurrences of each expected digit in-place by iterating over the string multiple times for each digit check.

Code

C

C++

Java

Python

C#

JavaScript

Complexity

Time Complexity: O(n^2).
Space Complexity: O(1).

Try this approach in the editor →

Approach 3: Counting + Enumeration

We can use an array cnt of length 10 to count the occurrences of each digit in the string num. Then, we enumerate each digit in the string num and check if its occurrence count equals the digit itself. If this condition is satisfied for all digits, we return true; otherwise, we return false.

The time complexity is O(n), and the space complexity is O(|\Sigma|). Here, n is the length of the string num, and |\Sigma| is the range of possible digit values, which is 10.

Code

Python

Java

C++

Go

TypeScript

Rust

C

Try this approach in the editor →

Complexity Comparison

ApproachComplexity
Count Digits with a Frequency Array

Time Complexity: O(n), where n is the length of the string.
Space Complexity: O(1), as the array size is constant (10 elements).

Count and Verify In-place

Time Complexity: O(n^2).
Space Complexity: O(1).

Counting + Enumeration—

Detailed Complexity Analysis

ApproachTimeSpaceWhen to Use
Count Digits with Frequency ArrayO(n)O(1)Best general solution; efficient for all inputs with constant digit range
Count and Verify In-placeO(n^2)O(1)Useful when avoiding extra memory or demonstrating brute-force reasoning

Video Solution

Leetcode 2283 - Check if Number Has Equal Digit Count and Digit Value || Biweekly Contest 79 • Leetcode Hub • 1,393 views views

Watch 9 more video solutions →

Frequently Asked Questions

Is Check if Number Has Equal Digit Count and Digit Value easy or hard?
The problem is classified as Easy. The main concept is digit frequency counting and index validation, which can be implemented with simple loops and a small array while maintaining O(n) time complexity.
Check if Number Has Equal Digit Count and Digit Value Python/Java solution
In Python or Java, iterate through the string and increment a frequency array indexed by digit value. After counting, loop through the string again and compare num[i] with freq[i]. If any mismatch occurs, return false; otherwise return true after the loop finishes.
How to solve Check if Number Has Equal Digit Count and Digit Value in O(n)?
Traverse the string once to build a frequency array for digits 0–9. Then iterate through each index i and check whether the integer value of num[i] equals the frequency of digit i. If every index matches, return true; otherwise return false. The algorithm performs two linear passes, giving O(n) time.
What is the best approach for Check if Number Has Equal Digit Count and Digit Value?
The most efficient approach uses a frequency array to count how often each digit appears. First iterate through the string and record digit frequencies, then compare each index i with the stored count of digit i. This runs in O(n) time with O(1) space because the digit range is fixed (0–9).
Is Check if Number Has Equal Digit Count and Digit Value asked at Google/Amazon/Meta?
Problems like this commonly appear in coding interviews focused on string processing and counting logic. While not always asked under the exact problem name, similar frequency validation questions appear in screening rounds at companies such as Amazon and Google.
What data structure is used in Check if Number Has Equal Digit Count and Digit Value?
The typical solution uses a fixed-size array (or occasionally a hash map) to store digit frequencies. Because digits range from 0 to 9, an integer array of size 10 is sufficient and provides constant-time updates and lookups.
What is the time complexity of Check if Number Has Equal Digit Count and Digit Value?
The optimal solution runs in O(n) time where n is the length of the numeric string. One pass counts digit frequencies and another pass verifies each index against the frequency array. Space complexity is O(1) because the counting structure has a constant size of 10.

Ready to solve this problem?

Practice Check if Number Has Equal Digit Count and Digit Value with our built-in code editor and test cases.

Practice on FleetCode