# Check if frequency of each digit is less than the digit

• Difficulty Level : Easy
• Last Updated : 25 May, 2022

Given an integer n, the task is to check if frequency of each digit of the number is less than or equal to digit itself.
Examples:

```Input : 51241
Output : False

Input : 1425243
Output : True```

Naive Approach: Start from 0 and count the frequency for every digit upto 9, if at any place frequency is more than the digit value then return false, else return true.

## C++

 `// A C++ program to validate a number``#include``using` `namespace` `std;` `// Function to validate number (Check if``// frequency of a digit is less than the``// digit itself or not)``bool` `validate(``long` `long` `int` `n)``{``    ``for` `(``int` `i=0; i<10; i++)``    ``{``        ``long` `long` `int` `temp = n;``        ``int` `count = 0;``        ``while` `(temp)``        ``{``            ``// If current digit of temp is``            ``// same as i``            ``if` `(temp % 10 == i)``                ``count++;` `            ``// if frequency is greater than``            ``// digit value, return false``            ``if` `(count > i)``                ``return` `false``;` `            ``temp /= 10;``        ``}``    ``}``    ``return` `true``;``}` `// driver program``int` `main()``{``    ``long` `long` `int` `n = 1552793;``    ``if` `(validate(n))``        ``cout << ``"True"``;``    ``else``        ``cout << ``"False"``;``    ``return` `0;``}`

## Java

 `// Java program to validate a number``import` `java .io.*;` `public` `class` `GFG {` `// Function to validate number (Check if``// frequency of a digit is less than the``// digit itself or not)``static` `boolean` `validate(``long` `n)``{``    ``for` `(``int` `i = ``0``; i < ``10``; i++)``    ``{``        ``long` `temp = n;``        ``int` `count = ``0``;``        ``while` `(temp > ``0``)``        ``{``            ``// If current digit of``            ``// temp is same as i``            ``if` `(temp % ``10` `== i)``                ``count++;` `            ``// if frequency is greater than``            ``// digit value, return false``            ``if` `(count > i)``                ``return` `false``;` `            ``temp /= ``10``;``        ``}``    ``}``    ``return` `true``;``}` `    ``// Driver Code``    ``static` `public` `void` `main (String[] args)``    ``{``            ``long` `n = ``1552793``;``        ``if` `(validate(n))``            ``System.out.println(``"True"``);``        ``else``            ``System.out.println(``"False"``);``    ``}``}` `// This code is contributed by vt_m.`

## Python3

 `# Python3 program to validate a number` `# Function to validate number (Check if``# frequency of a digit is less than the``# digit itself or not)``def` `validate(n):` `    ``for` `i ``in` `range``(``10``):``        ``temp ``=` `n;``        ``count ``=` `0``;``        ``while` `(temp):``            ` `            ``# If current digit of temp is``            ``# same as i``            ``if` `(temp ``%` `10` `=``=` `i):``                ``count``+``=``1``;` `            ``# if frequency is greater than``            ``# digit value, return false``            ``if` `(count > i):``                ``return` `-``1``;` `            ``temp ``/``/``=` `10``;` `    ``return` `1``;` `# Driver Code``n ``=` `1552793``;``geek ``=` `"True"` `if` `validate(n) ``else` `"False"``;``print``(geek);` `# This code is contributed by mits`

## C#

 `// C# program to validate a number``using` `System;` `public` `class` `GFG {` `// Function to validate number (Check if``// frequency of a digit is less than the``// digit itself or not)``static` `bool` `validate(``long` `n)``{``    ``for` `(``int` `i = 0; i < 10; i++)``    ``{``        ``long` `temp = n;``        ``int` `count = 0;``        ``while` `(temp > 0)``        ``{``            ``// If current digit of``            ``// temp is same as i``            ``if` `(temp % 10 == i)``                ``count++;` `            ``// if frequency is greater than``            ``// digit value, return false``            ``if` `(count > i)``                ``return` `false``;` `            ``temp /= 10;``        ``}``    ``}``    ``return` `true``;``}` `    ``// Driver Code``    ``static` `public` `void` `Main(String[] args)``    ``{``            ``long` `n = 1552793;``        ``if` `(validate(n))``            ``Console.WriteLine(``"True"``);``        ``else``            ``Console.WriteLine(``"False"``);``    ``}``}` `// This code is contributed by vt_m.`

## PHP

 ` ``\$i``)``                ``return` `-1;` `            ``\$temp` `/= 10;``        ``}``    ``}``    ``return` `1;``}` `    ``// Driver Code``    ``\$n` `= 1552793;``    ``\$geek` `= validate(``\$n``) ?``"True"` `:``"False"``;``    ``echo``(``\$geek``);` `// This code is contributed by Ajit``?>`

## Javascript

 ``

Output:

`True`

Time Complexity: O(10 * log10n), where n represents the given integer.
Auxiliary Space: O(1), no extra space is required, so it is a constant.

Efficient Approach: is to store the frequency of each digit and if at any place frequency is more than the digit value then return false, else return true.

## C++

 `// A C++ program to validate a number``#include``using` `namespace` `std;` `// Function to validate number (Check if``// frequency of a digit is less than the``// digit itself or not)``bool` `validate(``long` `long` `int` `n)``{``    ``int` `count[10] = {0}; ``    ``while` `(n)``    ``{``        ``// calculate frequency of each digit``        ``int` `r = n % 10;` `        ``// If count is already r, then``        ``// incrementing it would invalidate,``        ``// hence we return false.``        ``if` `(count[r] == r)``           ``return` `false``; ` `        ``count[r]++;``        ``n /= 10;``    ``}` `    ``return` `true``;``}` `// driver program``int` `main()``{``    ``long` `long` `int` `n = 1552793;``    ``if` `(validate(n))``        ``cout << ``"True"``;``    ``else``        ``cout << ``"False"``;``    ``return` `0;``}`

## Java

 `// A Java program to``// validate a number``import` `java.io.*;` `class` `GFG``{``    ` `// Function to validate``// number (Check if frequency``// of a digit is less than``// the digit itself or not)``static` `boolean` `validate(``long` `n)``{``    ``int` `count[] = ``new` `int``[``10``] ;``    ``while` `(n > ``0``)``    ``{``        ``// calculate frequency``        ``// of each digit``        ``int` `r = (``int``)n % ``10``;` `        ``// If count is already r,``        ``// then incrementing it``        ``// would invalidate,``        ``// hence we return false.``        ``if` `(count[r] == r)``        ``return` `false``;` `        ``count[r]++;``        ``n /= ``10``;``    ``}` `    ``return` `true``;``}` `// Driver Code``public` `static` `void` `main (String[] args)``{``    ``long` `n = ``1552793``;``    ``if` `(validate(n))``        ``System.out.println(``"True"``);``    ``else``        ``System.out.println(``"False"``);``}``}` `// This code is contributed by ajit`

## Python3

 `# A Python3 program to validate a number``import` `math as mt` `# Function to validate number (Check if``# frequency of a digit is less than the``# digit itself or not)``def` `validate(n):` `    ``count ``=` `[``0` `for` `i ``in` `range``(``10``)]``    ``while` `(n > ``0``):``    ` `        ``# calculate frequency of each digit``        ``r ``=` `n ``%` `10` `        ``# If count is already r, then``        ``# incrementing it would invalidate,``        ``# hence we return false.``        ``if` `(count[r] ``=``=` `r):``            ``return` `False` `        ``count[r] ``+``=` `1``        ``n ``=` `n ``/``/` `10``    ` `    ``return` `True` `# Driver Code``n ``=` `1552793``if` `(validate(n)):``    ``print``(``"True"``)``else``:``    ``print``(``"False"``)` `# This code is contributed by``# Mohit kumar 29`

## C#

 `// A C# program to validate a number``using` `System;` `class` `GFG``{``// Function to validate number``// (Check if frequency of a digit is``// less than the digit itself or not)``static` `bool` `validate(``long` `n)``{``    ``int` `[]count = ``new` `int``[10] ;``    ``while` `(n > 0)``    ``{``        ``// calculate frequency``        ``// of each digit``        ``int` `r = (``int``)n % 10;` `        ``// If count is already r, then ``        ``// incrementing it would invalidate,``        ``// hence we return false.``        ``if` `(count[r] == r)``        ``return` `false``;` `        ``count[r]++;``        ``n /= 10;``    ``}` `    ``return` `true``;``}` `// Driver Code``static` `public` `void` `Main ()``{``    ``long` `n = 1552793;``    ``if` `(validate(n))``        ``Console.WriteLine(``"True"``);``    ``else``        ``Console.WriteLine(``"False"``);``}``}` `// This code is contributed by jit_t`

## PHP

 ``

## Javascript

 ``

Output:

`True`

Time Complexity: O(log10n), where n represents the given integer.
Auxiliary Space: O(10), no extra space is required, so it is a constant.