Check if the frequency of all the digits in a number is same

Given a positive number ‘N’, the task is to find whether ‘N’ is balanced or not. Output ‘YES’ if ‘N’ is a balanced number else ‘NO’.

A number is balanced if the frequency of all the digits in it is same i.e. all the digits appear the same number of times.

Examples:



Input: N = 1234567890
Output: YES
The frequencies of all the digits are same.
i.e. every digit appears same number of times.

Input: N = 1337
Output: NO

Approach:

  • Create an array freq[] of size 10 which will store the frequency of each digit in ‘N’.
  • Then, check if all the digits of ‘N’ have the same frequency or not.
  • If yes then print ‘YES‘ or ‘NO‘ otherwise.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include<bits/stdc++.h>
using namespace std;
  
// returns true if the number
// passed as the argument
// is a balanced number.
bool isNumBalanced(int N)
{
  
    string st = to_string(N);
    bool isBalanced = true;
  
    // frequency array to store
    // the frequencies of all
    // the digits of the number
    int freq[10] = {0};
    int i = 0;
    int n = st.size();
  
    for (i = 0; i < n; i++)
  
        // store the frequency of
        // the current digit
        freq[st[i] - '0']++;
  
    for (i = 0; i < 9; i++)
    {
  
        // if freq[i] is not
        // equal to freq[i + 1] at
        // any index 'i' then set
        // isBalanced to false
        if (freq[i] != freq[i + 1])
            isBalanced = false;
    }
  
    // return true if
    // the string is balanced
    if (isBalanced)
        return true;
    else
        return false;
}
  
// Driver code
int main()
{
    int N = 1234567890;
    bool flag = isNumBalanced(N);
  
    if (flag)
        cout << "YES";
    else
        cout << "NO";
}
  
// This code is contributed by ihritik

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the approach
class GFG {
  
    // returns true if the number
    // passed as the argument
    // is a balanced number.
    static boolean isNumBalanced(int N)
    {
  
        String st = "" + N;
        boolean isBalanced = true;
  
        // frequency array to store
        // the frequencies of all
        // the digits of the number
        int[] freq = new int[10];
        int i = 0;
        int n = st.length();
  
        for (i = 0; i < n; i++)
  
            // store the frequency of
            // the current digit
            freq[st.charAt(i) - '0']++;
  
        for (i = 0; i < 9; i++) {
  
            // if freq[i] is not
            // equal to freq[i + 1] at
            // any index 'i' then set
            // isBalanced to false
            if (freq[i] != freq[i + 1])
                isBalanced = false;
        }
  
        // return true if
        // the string is balanced
        if (isBalanced)
            return true;
        else
            return false;
    }
  
    // Driver code
    public static void main(String[] args)
    {
        int N = 1234567890;
        boolean flag = isNumBalanced(N);
  
        if (flag)
            System.out.println("YES");
        else
            System.out.println("NO");
    }
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Implementation of JAVA to check the 
// given number is Balanced or not
import java.util.*;
public class Main
{
    // returns true if the number 
    // passed as the argument 
    // is a balanced number. 
    public static boolean isNumBalanced(int num){
        // to get the absolute value of the number
        num=Math.abs(num);
          
        // to convert the int number into a String
        String str=num+""
          
        // to convert the String into Character Array
        char[] ch_arr=str.toCharArray();
          
        // HashSet is used to remove the duplicates 
        // in the Character Array
        HashSet<Character> hs=new HashSet<Character>();
        for(char ch:ch_arr){
            // Adding the Characters in the Array in the Set
            hs.add(ch);
        }
        // getting the length of the String
        int str_len=str.length();
          
        // getting the numbers of elemnts in the HashSet
        int hs_len=hs.size();
        // return true if 
        // the number is balanced
        // checks for the number is balanced or not by
        // comparing length of String and HashSet 
        if(hs_len<=str_len/2 || hs_len==str_len)
        {
            return true;
        }
        return false;
          
    }
    // Driver Code
    public static void main(String[] args)
        {
            int N = 1234567890;
            boolean flag = isNumBalanced(N);
      
            if (flag)
                System.out.println("YES");
            else
                System.out.println("NO");
        }
    }
    // This code is contributed by Mano

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation of the above approach
  
# Returns true if the number passed as 
# the argument is a balanced number. 
def isNumBalanced(N): 
  
    st = str(N) 
    isBalanced = True
  
    # Frequency array to store the frequencies
    # of all the digits of the number 
    freq = [0] * 10
    n = len(st) 
  
    for i in range(0, n): 
  
        # store the frequency of the 
        # current digit 
        freq[int(st[i])] += 1
  
    for i in range(0, 9): 
  
        # if freq[i] is not equal to 
        # freq[i + 1] at any index 'i'
        # then set isBalanced to false 
        if freq[i] != freq[i + 1]: 
            isBalanced = False
  
    # Return true if the string 
    # is balanced 
    if isBalanced: 
        return True
    else:
        return False
  
# Driver code 
if __name__ == "__main__"
      
    N = 1234567890
    flag = isNumBalanced(N) 
  
    if flag: 
        print("YES"
    else:
        print("NO"
      
# This code is contributed by Rituraj Jain

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// CSHARP implementation of the above approach
using System;
  
class Program
{
// returns true if the number
// passed as the argument
// is a balanced number.
static bool isNumBalanced(int N)
{
    String st = "" + N;
    bool isBalanced = true;
    // frequency array to store
    // the frequencies of all
    // the digits of the number
    int[] freq = new int[10];
    int i = 0;
    int n = st.Length;
    for (i = 0; i < n; i++)
    // store the frequency of
    // the current digit
    freq[st[i] - '0']++;
    for (i = 0; i < 9; i++) 
    {
        // if freq[i] is not
        // equal to freq[i + 1] at
        // any index ‘i’ then set
        // isBalanced to false
        if (freq[i] != freq[i + 1])
        isBalanced = false;
          
    }
    // return true if
    // the string is balanced
    if (isBalanced)
    return true;
    else
    return false;
      
      
}
  
// Driver code
static void Main()
{
    int N = 1234567890;
    bool flag = isNumBalanced(N);
    if (flag)
    Console.WriteLine("YES");
    else
    Console.WriteLine("NO");
  
}
// This code is contributed by ANKITRAI1
}

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation of the approach
  
// returns true if the number
// passed as the argument
// is a balanced number.
function isNumBalanced($N)
{
    $st = "" . strval($N);
    $isBalanced = true;
  
    // frequency array to store
    // the frequencies of all
    // the digits of the number
    $freq = array_fill(0, 10, 0);
    $i = 0;
    $n = strlen($st);
  
    for ($i = 0; $i < $n; $i++)
  
        // store the frequency of
        // the current digit
        $freq[ord($st[$i]) - ord('0')]++;
  
    for ($i = 0; $i < 9; $i++) 
    {
  
        // if freq[i] is not
        // equal to freq[i + 1] at
        // any index 'i' then set
        // isBalanced to false
        if ($freq[$i] != $freq[$i + 1])
            $isBalanced = false;
    }
  
    // return true if
    // the string is balanced
    if ($isBalanced)
        return true;
    else
        return false;
}
  
// Driver code
$N = 1234567890;
$flag = isNumBalanced($N);
  
if ($flag)
    echo "YES\n";
else
    echo "NO\n";
  
// This code is contributed by mits
?>

chevron_right


Output:

YES


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.