Escriba una función para verificar si dos strings dadas son un anagrama entre sí o no. Un anagrama de una string es otra string que contiene los mismos caracteres, solo el orden de los caracteres puede ser diferente.
Por ejemplo, “abcd” y “dabc” son un anagrama el uno del otro.
Enfoque: los mapas hash también se pueden usar para encontrar si dos strings dadas son anagramas o no, asignando los caracteres de cada string a mapas hash individuales y comparándolos entre sí. Implementación:
Java
// Java code to check whether two strings // are Anagram or not using HashMap import java.io.*; import java.util.*; class GFG { // Function to check whether two strings // are an anagram of each other static boolean areAnagram(String str1, String str2) { HashMap<Character, Integer> hmap1 = new HashMap<Character, Integer>(); HashMap<Character, Integer> hmap2 = new HashMap<Character, Integer>(); char arr1[] = str1.toCharArray(); char arr2[] = str2.toCharArray(); // Mapping first string for (int i = 0; i < arr1.length; i++) { if (hmap1.get(arr1[i]) == null) { hmap1.put(arr1[i], 1); } else { Integer c = (int)hmap1.get(arr1[i]); hmap1.put(arr1[i], ++c); } } // Mapping second String for (int j = 0; j < arr2.length; j++) { if (hmap2.get(arr2[j]) == null) hmap2.put(arr2[j], 1); else { Integer d = (int)hmap2.get(arr2[j]); hmap2.put(arr2[j], ++d); } } if (hmap1.equals(hmap2)) return true; else return false; } // Test function public static void test(String str1, String str2) { System.out.println("Strings to be checked are:\n" + str1 + "\n" + str2 + "\n"); // Find the result if (areAnagram(str1, str2)) System.out.println("The two strings are " + "anagrams of each other\n"); else System.out.println("The two strings are not" + " anagrams of each other\n"); } // Driver program public static void main(String args[]) { // Get the Strings String str1 = "geeksforgeeks"; String str2 = "forgeeksgeeks"; // Test the Strings test(str1, str2); // Get the Strings str1 = "geeksforgeeks"; str2 = "geeks"; // Test the Strings test(str1, str2); } }
Strings to be checked are: geeksforgeeks forgeeksgeeks The two strings are anagrams of each other Strings to be checked are: geeksforgeeks geeks The two strings are not anagram of each other
Complejidad de tiempo: O(l1 + l2) donde l1 y l2 son longitudes de strings.
Espacio auxiliar: O(m1 + m2) donde m1 y m2 son números de caracteres únicos en cada string.
Sugiera si alguien tiene una mejor solución que sea más eficiente en términos de espacio y tiempo.
Este artículo es una contribución de Aarti_Rathi . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Artículo relacionado: Comprobar si dos strings son anagramas entre sí
Publicación traducida automáticamente
Artículo escrito por Anonymous111 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA