Check if two Integer are anagrams of each other

18 May, 2022
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++
Java
Python3
C#
Javascript
// 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 nvoid 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 otherbool 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 codeint main(){    int a = 240, b = 204;     if (areAnagrams(a, b))        cout << "Yes";    else        cout << "No";     return 0;}
// Java implementation of the approachclass 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        
# Python3 implementation of the approachTEN = 10 # Function to update the frequency array# such that freq[i] stores the# frequency of digit i in ndef 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 otherdef 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 codea = 240b = 204 if (areAnagrams(a, b)):    print("Yes")else:    print("No") # This code is contributed by# divyamohan123
// C# implementation of the approachusing 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
<script>// Javascript implementation of the approach const TEN = 10; // Function to update the frequency array// such that freq[i] stores the// frequency of digit i in nfunction updateFreq(n, freq){     // While there are digits    // left to process    while (n) {        let digit = n % TEN;         // Update the frequency of        // the current digit        freq[digit]++;         // Remove the last digit        n = parseInt(n / TEN);    }} // Function that returns true if a and b// are anagarams of each otherfunction areAnagrams(a, b){     // To store the frequencies of    // the digits in a and b    let freqA = new Array(TEN).fill(0);    let freqB = new Array(TEN).fill(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 (let 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    let a = 240, b = 204;     if (areAnagrams(a, b))        document.write("Yes");    else        document.write("Yes"); </script>
Yes
 
Convert two integers to string.
Sort the strings and check if they are equal.
Print Yes if they are equal.
Else no.
Below is the implementation:
C++
Python3
Javascript
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std; // Function that returns true if a and b// are anagarams of each otherbool areAnagrams(int a, int b){       // Converting numbers to strings    string c = to_string(a);    string d = to_string(b);     // Checking if the sorting values    // of two strings are equal    sort(c.begin(), c.end());    sort(d.begin(), d.end());    if (c == d)        return true;    else        return false;} // Driver codeint main(){    int a = 240;    int b = 204;     if (areAnagrams(a, b))        cout << "Yes";    else        cout << "No";} // This code is contributed by ukasp.
# Python3 implementation of the approach# Function that returns true if a and b# are anagarams of each otherdef areAnagrams(a, b):       # Converting numbers to strings    a = str(a)    b = str(b)         # Checking if the sorting values    # of two strings are equal    if(sorted(a) == sorted(b)):        return True    else:        return False  # Driver codea = 240b = 204 if (areAnagrams(a, b)):    print("Yes")else:    print("No") # This code is contributed by vikkycirus
<script> // JavaScript implementation of the approach// Function that returns true if a and b// are anagarams of each otherfunction areAnagrams(a, b){     // Converting numbers to strings    a = a.toString().split("").sort().join("")    b = b.toString().split("").sort().join("")         // Checking if the sorting values    // of two strings are equal    if(a == b){        return true    }    else        return false}  // Driver codelet a = 240let b = 204 if (areAnagrams(a, b))    document.write("Yes")else    document.write("No") // This code is contributed by shinjanpatra </script>
Output:
Yes
ihritik
divyamohan123
vikkycirus
subham348
ukasp
shinjanpatra
number-digits
Hash
Mathematical
Hash
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
What is Hashing | A Complete Tutorial
Longest Consecutive Subsequence
Counting frequencies of array elements
Sort string of characters
Hashing | Set 2 (Separate Chaining)
Program for Fibonacci numbers
Set in C++ Standard Template Library (STL)
Write a program to print all permutations of a given string
C++ Data Types
Merge two sorted arrays