Por Yuvraj Chandra
Cuota
Correo electrónico

Comparar si dos cadenas de texto son anagramas es una gran tarea de resolución de problemas para mejorar las habilidades de programación.

Un anagrama es una cadena formada reordenando las letras de una cadena diferente. Verificar si dos cadenas son anagramas entre sí puede parecer difícil, pero es solo un poco complicado y engañosamente sencillo. En este artículo, aprenderá a verificar si dos cadenas son anagramas entre sí usando C ++, Python y JavaScript.

Planteamiento del problema

Te dan dos cadenas s1 y s2, necesitas verificar si las dos cadenas son anagramas entre sí o no.

Ejemplo 1: Sea s1 = "creativo" y s2 = "reactivo".

Dado que la segunda cadena se puede formar reorganizando las letras de la primera cadena y viceversa, las dos cadenas son anagramas entre sí.

Ejemplo 2: Sea s1 = "Peter Piper recogió un pimiento de pimientos en escabeche" y s2 = "Un picoteo de pimientos en escabeche que recogió Peter Piper".

instagram viewer

Dado que la segunda cadena no se puede formar reorganizando las letras de la primera cadena y viceversa, las dos cadenas no son anagramas entre sí.

Proceso para verificar si dos cadenas son anagramas entre sí

Puede seguir el enfoque a continuación para verificar si las dos cadenas son anagramas entre sí:

  1. Compara la longitud de ambas cuerdas.
  2. Si la longitud de ambas cadenas no es la misma, significa que no pueden ser anagramas entre sí. Por lo tanto, devuelve falso.
  3. Si la longitud de ambas cadenas es la misma, continúe.
  4. Ordene ambas cadenas.
  5. Compare ambas cadenas ordenadas.
  6. Si ambas cadenas ordenadas son iguales, significa que son anagramas entre sí. Por lo tanto, devuelve verdadero.
  7. Si ambas cadenas ordenadas son diferentes, significa que no son anagramas entre sí. Por lo tanto, devuelve falso.

Relacionada: Cómo comprobar si una cuerda es un palíndromo

Programa C ++ para comprobar si dos cadenas son anagramas entre sí

A continuación se muestra el programa C ++ para comprobar si dos cadenas son anagramas entre sí o no:

#incluir 
usando el espacio de nombres std;
bool checkAnagrams (cadena s1, cadena s2)
{
int tamaño1 = s1.length ();
int tamaño2 = s2.length ();
// Si la longitud de ambas cadenas no es la misma,
// significa que no pueden ser anagramas el uno del otro.
// Por lo tanto, devuelve falso.
si (tamaño1! = tamaño2)
{
falso retorno;
}
ordenar (s1.begin (), s1.end ());
ordenar (s2.begin (), s2.end ());
para (int i = 0; i {
si (s1 [i]! = s2 [i])
{
falso retorno;
}
}
devuelve verdadero;
}
int main ()
{
string s1 = "escuchar";
string s2 = "silencioso";
cout << "Cadena 1:" << s1 << endl;
cout << "Cadena 2:" << s2 << endl;
si (checkAnagrams (s1, s2))
{
cout << "Sí, las dos cadenas son anagramas entre sí" << endl;
}
demás
{
cout << "No, las dos cadenas no son anagramas entre sí" << endl;
}
string s3 = "Bienvenido a MUO";
string s4 = "MUO de bienvenida";
cout << "Cadena 3:" << s3 << endl;
cout << "Cadena 4:" << s4 << endl;
si (checkAnagrams (s3, s4))
{
cout << "Sí, las dos cadenas son anagramas entre sí" << endl;
}
demás
{
cout << "No, las dos cadenas no son anagramas entre sí" << endl;
}
string s5 = "Peter Piper cogió un pimiento de pimientos en escabeche";
string s6 = "Un picoteo de pimientos en escabeche que recogió Peter Piper";
cout << "Cadena 5:" << s5 << endl;
cout << "Cadena 6:" << s6 << endl;
si (checkAnagrams (s5, s6))
{
cout << "Sí, las dos cadenas son anagramas entre sí" << endl;
}
demás
{
cout << "No, las dos cadenas no son anagramas entre sí" << endl;
}
string s7 = "Vende conchas a la orilla del mar";
string s8 = "conchas a la orilla del mar";
cout << "Cadena 7:" << s7 << endl;
cout << "Cadena 8:" << s8 << endl;
si (checkAnagrams (s7, s8))
{
cout << "Sí, las dos cadenas son anagramas entre sí" << endl;
}
demás
{
cout << "No, las dos cadenas no son anagramas entre sí" << endl;
}
string s9 = "creativo";
string s10 = "reactivo";
cout << "Cadena 9:" << s9 << endl;
cout << "Cadena 10:" << s10 << endl;
si (checkAnagrams (s9, s10))
{
cout << "Sí, las dos cadenas son anagramas entre sí" << endl;
}
demás
{
cout << "No, las dos cadenas no son anagramas entre sí" << endl;
}
return 0;
}

Producción:

Cadena 1: escucha
Cadena 2: silencioso
Sí, las dos cadenas son anagramas entre sí
Cadena 3: Bienvenido a MUO
Cadena 4: MUO para dar la bienvenida
Sí, las dos cadenas son anagramas entre sí
Cadena 5: Peter Piper recogió un pimiento de pimientos en escabeche
Cuerda 6: Un picoteo de pimientos en escabeche que recogió Peter Piper
No, las dos cadenas no son anagramas entre sí
Cadena 7: vende conchas marinas a la orilla del mar
Cadena 8: conchas marinas a la orilla del mar
No, las dos cadenas no son anagramas entre sí
Cadena 9: creativo
Cadena 10: reactivo
Sí, las dos cadenas son anagramas entre sí

Relacionada: Cómo contar las ocurrencias de un personaje dado en una cadena

Programa Python para verificar si dos cadenas son anagramas entre sí

A continuación se muestra el programa Python para verificar si dos cadenas son anagramas entre sí o no:

def checkAnagrams (s1, s2):
tamaño1 = len (s1)
tamaño2 = len (s2)
# Si la longitud de ambas cadenas no es la misma,
# significa que no pueden ser anagramas el uno del otro.
# Por lo tanto, devuelve falso.
si tamaño1! = tamaño2:
volver 0
s1 = ordenado (s1)
s2 = ordenado (s2)
para i en el rango (0, tamaño1):
si s1 [i]! = s2 [i]:
falso retorno
volver verdadero
s1 = "escuchar"
s2 = "silencioso"
print ("Cadena 1:", s1)
print ("Cadena 2:", s2)
if (checkAnagrams (s1, s2)):
print ("Sí, las dos cadenas son anagramas entre sí")
demás:
print ("No, las dos cadenas no son anagramas entre sí")
s3 = "Bienvenido a MUO"
s4 = "MUO de bienvenida"
print ("Cadena 3:", s3)
print ("Cadena 4:", s4)
si (checkAnagrams (s3, s4)):
print ("Sí, las dos cadenas son anagramas entre sí")
demás:
print ("No, las dos cadenas no son anagramas entre sí")
s5 = "Peter Piper cogió un pimiento de pimientos en escabeche"
s6 = "Un picoteo de pimientos en escabeche que recogió Peter Piper"
print ("Cadena 5:", s5)
print ("Cadena 6:", s6)
si (checkAnagrams (s5, s6)):
print ("Sí, las dos cadenas son anagramas entre sí")
demás:
print ("No, las dos cadenas no son anagramas entre sí")
s7 = "Ella vende conchas a la orilla del mar"
s8 = "conchas a la orilla del mar"
print ("Cadena 7:", s7)
print ("Cadena 8:", s8)
si (checkAnagrams (s7, s8)):
print ("Sí, las dos cadenas son anagramas entre sí")
demás:
print ("No, las dos cadenas no son anagramas entre sí")
s9 = "creativo"
s10 = "reactivo"
print ("Cadena 9:", s9)
print ("Cadena 10:", s10)
si (checkAnagrams (s9, s10)):
print ("Sí, las dos cadenas son anagramas entre sí")
demás:
print ("No, las dos cadenas no son anagramas entre sí")

Producción:

Cadena 1: escucha
Cadena 2: silencioso
Sí, las dos cadenas son anagramas entre sí
Cadena 3: Bienvenido a MUO
Cadena 4: MUO para dar la bienvenida
Sí, las dos cadenas son anagramas entre sí
Cadena 5: Peter Piper recogió un pimiento de pimientos en escabeche
Cuerda 6: Un picoteo de pimientos en escabeche que recogió Peter Piper
No, las dos cadenas no son anagramas entre sí
Cadena 7: vende conchas marinas a la orilla del mar
Cadena 8: conchas marinas a la orilla del mar
No, las dos cadenas no son anagramas entre sí
Cadena 9: creativo
Cadena 10: reactivo
Sí, las dos cadenas son anagramas entre sí

Relacionada: Cómo encontrar vocales, consonantes, dígitos y caracteres especiales en una cadena

Compruebe si dos cadenas son anagramas entre sí en JavaScript

A continuación se muestra el programa JavaScript para verificar si dos cadenas son anagramas entre sí o no:

función checkAnagrams (s1, s2) {
let size1 = s1.length;
let size2 = s2.length;
// Si la longitud de ambas cadenas no es la misma,
// significa que no pueden ser anagramas el uno del otro.
// Por lo tanto, devuelve falso.
si (tamaño1! = tamaño2)
{
falso retorno;
}
s1.sort ();
s2.sort ();
para (sea i = 0; i {
si (s1 [i]! = s2 [i])
{
falso retorno;
}
}
devuelve verdadero;
}
var s1 = "escuchar";
var s2 = "silencioso";
document.write ("Cadena 1:" + s1 + "
");
document.write ("Cadena 2:" + s2 + "
");
if (checkAnagrams (s1.split (""), s2.split (""))) {
document.write ("Sí, las dos cadenas son anagramas entre sí" + "
");
} demás {
document.write ("No, las dos cadenas no son anagramas entre sí" + "
");
}
var s3 = "Bienvenido a MUO";
var s4 = "MUO de bienvenida";
document.write ("Cadena 3:" + s3 + "
");
document.write ("Cadena 4:" + s4 + "
");
if (checkAnagrams (s3.split (""), s4.split (""))) {
document.write ("Sí, las dos cadenas son anagramas entre sí" + "
");
} demás {
document.write ("No, las dos cadenas no son anagramas entre sí" + "
");
}
var s5 = "Peter Piper cogió un pimiento de pimientos en escabeche";
var s6 = "Un picoteo de pimientos en escabeche que cogió Peter Piper";
document.write ("Cadena 5:" + s5 + "
");
document.write ("Cadena 6:" + s6 + "
");
if (checkAnagrams (s5.split (""), s6.split (""))) {
document.write ("Sí, las dos cadenas son anagramas entre sí" + "
");
} demás {
document.write ("No, las dos cadenas no son anagramas entre sí" + "
");
}
var s7 = "Vende conchas a la orilla del mar";
var s8 = "conchas a la orilla del mar";
document.write ("Cadena 7:" + s7 + "
");
document.write ("Cadena 8:" + s8 + "
");
if (checkAnagrams (s7.split (""), s8.split (""))) {
document.write ("Sí, las dos cadenas son anagramas entre sí" + "
");
} demás {
document.write ("No, las dos cadenas no son anagramas entre sí" + "
");
}
var s9 = "creativo";
var s10 = "reactivo";
document.write ("Cadena 9:" + s9 + "
");
document.write ("Cadena 10:" + s10 + "
");
if (checkAnagrams (s9.split (""), s10.split (""))) {
document.write ("Sí, las dos cadenas son anagramas entre sí" + "
");
} demás {
document.write ("No, las dos cadenas no son anagramas entre sí" + "
");
}

Producción:

Cadena 1: escucha
Cadena 2: silencioso
Sí, las dos cadenas son anagramas entre sí
Cadena 3: Bienvenido a MUO
Cadena 4: MUO para dar la bienvenida
Sí, las dos cadenas son anagramas entre sí
Cadena 5: Peter Piper recogió un pimiento de pimientos en escabeche
Cuerda 6: Un picoteo de pimientos en escabeche que recogió Peter Piper
No, las dos cadenas no son anagramas entre sí
Cadena 7: vende conchas marinas a la orilla del mar
Cadena 8: conchas marinas a la orilla del mar
No, las dos cadenas no son anagramas entre sí
Cadena 9: creativo
Cadena 10: reactivo
Sí, las dos cadenas son anagramas entre sí

Relacionada: ¿Cómo se encuentra el valor ASCII de un carácter?

Utilice los recursos adecuados para aprender a codificar

Si está buscando solidificar sus habilidades de codificación, es importante aprender nuevos conceptos y dedicar tiempo a usarlos. Una forma de hacerlo es con aplicaciones de programación, que te ayudarán a aprender diferentes conceptos de programación mientras te diviertes al mismo tiempo.

Cuota
Correo electrónico
8 aplicaciones que le ayudarán a aprender a codificar para el Día Internacional de los Programadores

¿Quieres mejorar tus habilidades de codificación? Estas aplicaciones y sitios web lo ayudarán a aprender a programar a su propio ritmo.

Leer siguiente

Temas relacionados
  • Programación
  • JavaScript
  • Pitón
  • Programación en C
Sobre el Autor
Yuvraj Chandra (43 Artículos publicados)

Yuvraj es estudiante de licenciatura en Ciencias de la Computación en la Universidad de Delhi, India. Le apasiona el desarrollo web Full Stack. Cuando no está escribiendo, está explorando la profundidad de diferentes tecnologías.

Más de Yuvraj Chandra

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse