Check if frequency of each digit is less than the digit
Last Updated :
13 Sep, 2023
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<bits/stdc++.h>
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
<?php
// PHP program to validate a number
// Function to validate number
// (Check if frequency of a
// digit is less than the
// digit itself or not)
function validate($n)
{
for ($i = 0; $i < 10; $i++)
{
$temp = $n;
$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 -1;
$temp /= 10;
}
}
return 1;
}
// Driver Code
$n = 1552793;
$geek = validate($n) ?"True" :"False";
echo($geek);
// This code is contributed by Ajit
?>
JavaScript
<script>
// JavaScript program for the above approach
// Function to validate number (Check if
// frequency of a digit is less than the
// digit itself or not)
function validate(n)
{
for (let i = 0; i < 10; i++)
{
let temp = n;
let 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
let n = 1552793;
if (validate(n))
document.write("True");
else
document.write("False");
// This code is contributed by susmitakundugoaldanga.
</script>
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<bits/stdc++.h>
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
<?php
// A PHP program to validate a number
// Function to validate number (Check if
// frequency of a digit is less than the
// digit itself or not)
function validate($n)
{
$count=array(10);
while ($n)
{
// 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] = $count[$r] + 1;
$n = $n / 10;
}
return true;
}
// Driver Code
$n = 1552793;
$geek = validate($n) ?"True" :"False";
echo($geek);
?>
JavaScript
<script>
// A JavaScript program to validate a number
// Function to validate number (Check if
// frequency of a digit is less than the
// digit itself or not)
function validate(n)
{
let count = new Uint8Array(10);
while (n)
{
// calculate frequency of each digit
let 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 = Math.floor(n / 10);
}
return true;
}
// driver program
let n = 1552793;
if (validate(n))
document.write( "True");
else
document.write("False");
// This code is contributed by Surbhi Tyagi.
</script>
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.
Similar Reads
Interview Preparation
Practice @Geeksforgeeks
Data Structures
Algorithms
Programming Languages
Web Technologies
Computer Science Subjects
Data Science & ML
Tutorial Library
GATE CS