Skip to content
Related Articles

Related Articles

Check if two Integer are anagrams of each other
  • Last Updated : 03 Oct, 2019

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :