Comprobar si dos enteros son anagramas uno del otro

Dados dos números enteros A y B , la tarea es verificar si los números dados son anagramas entre sí o no. Al igual que las strings, se dice que un número es un anagrama de otro número si se puede hacer igual al otro número simplemente mezclando los dígitos en él.
Ejemplos: 

Entrada: A = 204, B = 240 
Salida:

Entrada: A = 23, B = 959 
Salida: No 

Enfoque: Cree dos arrays freqA[] y freqB[] donde freqA[i] y freqB[i] almacenarán la frecuencia del dígito i en a y b respectivamente. Ahora recorra las arrays de frecuencia y para cualquier dígito i si freqA[i] != freqB[i] entonces los números no son anagramas entre sí, sino que lo son.
A continuación se muestra la implementación del enfoque anterior:

C++

// 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;
}

Java

// 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
        

Python3

# 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

C#

// 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

Javascript

<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 n
function 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 other
function 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>
Producción: 

Yes

 

Método #2: Usando la clasificación():

  • Convierte dos enteros en strings.
  • Ordena las strings y comprueba si son iguales.
  • Escriba Sí si son iguales.
  • De lo contrario no.

A continuación se muestra la implementación:

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function that returns true if a and b
// are anagarams of each other
bool 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 code
int main()
{
    int a = 240;
    int b = 204;
 
    if (areAnagrams(a, b))
        cout << "Yes";
    else
        cout << "No";
}
 
// This code is contributed by ukasp.

Python3

# Python3 implementation of the approach
# Function that returns true if a and b
# are anagarams of each other
def 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 code
a = 240
b = 204
 
if (areAnagrams(a, b)):
    print("Yes")
else:
    print("No")
 
# This code is contributed by vikkycirus

Javascript

<script>
 
// JavaScript implementation of the approach
// Function that returns true if a and b
// are anagarams of each other
function 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 code
let a = 240
let b = 204
 
if (areAnagrams(a, b))
    document.write("Yes")
else
    document.write("No")
 
// This code is contributed by shinjanpatra
 
</script>

Producción:

Yes

Publicación traducida automáticamente

Artículo escrito por gp6 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *