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: Sí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>
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