Check if frequency of each digit is less than the digit
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.