Check if two Integer are anagrams of each other

Given two integers A and B, the task is to check whether the given numbers are anagrams of each other or not. Just like strings, a number is said to be an anagram of some other number if it can be made equal to the other number by just shuffling the digits in it.

Examples:

Input: A = 204, B = 240
Output: Yes



Input: A = 23, B = 959
Output: No

Approach: Create two arrays freqA[] and freqB[] where freqA[i] and freqB[i] will store the frequency of digit i in a and b respectively. Now traverse the frequency arrays and for any digit i if freqA[i] != freqB[i] then the numbers are not anagrams of each other else they are.

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;
  
const int TEN = 10;
  
// Function to update the frequency array
// such that freq[i] stores the
// frequency of digit i in n
void updateFreq(int n, int freq[])
{
  
    // While there are digits
    // left to process
    while (n) {
        int digit = n % TEN;
  
        // Update the frequency of
        // the current digit
        freq[digit]++;
  
        // Remove the last digit
        n /= TEN;
    }
}
  
// Function that returns true if a and b
// are anagarams of each other
bool areAnagrams(int a, int b)
{
  
    // To store the frequencies of
    // the digits in a and b
    int freqA[TEN] = { 0 };
    int freqB[TEN] = { 0 };
  
    // Update the frequency of
    // the digits in a
    updateFreq(a, freqA);
  
    // Update the frequency of
    // the digits in b
    updateFreq(b, freqB);
  
    // Match the frequencies of
    // the common digits
    for (int i = 0; i < TEN; i++) {
  
        // If frequency differs for any digit
        // then the numbers are not
        // anagrams of each other
        if (freqA[i] != freqB[i])
            return false;
    }
  
    return true;
}
  
// Driver code
int main()
{
    int a = 240, b = 204;
  
    if (areAnagrams(a, b))
        cout << "Yes";
    else
        cout << "No";
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the approach
class GFG
{
    static final int TEN = 10;
      
    // Function to update the frequency array
    // such that freq[i] stores the
    // frequency of digit i in n
    static void updateFreq(int n, int [] freq)
    {
      
        // While there are digits
        // left to process
        while (n > 0)
        {
            int digit = n % TEN;
      
            // Update the frequency of
            // the current digit
            freq[digit]++;
      
            // Remove the last digit
            n /= TEN;
        }
    }
      
    // Function that returns true if a and b
    // are anagarams of each other
    static boolean areAnagrams(int a, int b)
    {
      
        // To store the frequencies of
        // the digits in a and b
        int [] freqA = new int[TEN];
        int [] freqB = new int[TEN];
      
        // Update the frequency of
        // the digits in a
        updateFreq(a, freqA);
      
        // Update the frequency of
        // the digits in b
        updateFreq(b, freqB);
      
        // Match the frequencies of
        // the common digits
        for (int i = 0; i < TEN; i++) 
        {
      
            // If frequency differs for any digit
            // then the numbers are not
            // anagrams of each other
            if (freqA[i] != freqB[i])
                return false;
        }
        return true;
    }
      
    // Driver code
    public static void main (String[] args)
    {
        int a = 204, b = 240;
      
        if (areAnagrams(a, b))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}
  
// This code is contributed by ihirtik
         

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation of the approach 
TEN = 10
  
# Function to update the frequency array 
# such that freq[i] stores the 
# frequency of digit i in n 
def updateFreq(n, freq) :
  
    # While there are digits 
    # left to process 
    while (n) : 
        digit = n % TEN 
  
        # Update the frequency of 
        # the current digit 
        freq[digit] += 1
  
        # Remove the last digit 
        n //= TEN 
  
# Function that returns true if a and b 
# are anagarams of each other 
def areAnagrams(a, b): 
  
    # To store the frequencies of 
    # the digits in a and b 
    freqA = [ 0 ] * TEN 
    freqB = [ 0 ] * TEN
  
    # Update the frequency of 
    # the digits in a 
    updateFreq(a, freqA) 
  
    # Update the frequency of 
    # the digits in b 
    updateFreq(b, freqB) 
  
    # Match the frequencies of 
    # the common digits 
    for i in range(TEN): 
  
        # If frequency differs for any digit 
        # then the numbers are not 
        # anagrams of each other 
        if (freqA[i] != freqB[i]): 
            return False
              
    return True
  
# Driver code 
a = 240
b = 204
  
if (areAnagrams(a, b)): 
    print("Yes"
else:
    print("No"
  
# This code is contributed by
# divyamohan123

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the approach
using System;
  
class GFG
{
    static int TEN = 10;
      
    // Function to update the frequency array
    // such that freq[i] stores the
    // frequency of digit i in n
    static void updateFreq(int n, int [] freq)
    {
      
        // While there are digits
        // left to process
        while (n > 0)
        {
            int digit = n % TEN;
      
            // Update the frequency of
            // the current digit
            freq[digit]++;
      
            // Remove the last digit
            n /= TEN;
        }
    }
      
    // Function that returns true if a and b
    // are anagarams of each other
    static bool areAnagrams(int a, int b)
    {
      
        // To store the frequencies of
        // the digits in a and b
        int [] freqA = new int[TEN];
        int [] freqB = new int[TEN];;
      
        // Update the frequency of
        // the digits in a
        updateFreq(a, freqA);
      
        // Update the frequency of
        // the digits in b
        updateFreq(b, freqB);
      
        // Match the frequencies of
        // the common digits
        for (int i = 0; i < TEN; i++) 
        {
      
            // If frequency differs for any digit
            // then the numbers are not
            // anagrams of each other
            if (freqA[i] != freqB[i])
                return false;
        }
        return true;
    }
      
    // Driver code
    public static void Main ()
    {
        int a = 204, b = 240;
      
        if (areAnagrams(a, b))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
  
// This code is contributed by ihirtik

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.



Improved By : ihritik, divyamohan123



Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.