Por Yuvraj Chandra
CuotaPíoCorreo electrónico

¿Necesita imprimir las permutaciones de una cadena? Le mostraremos cómo en varios idiomas.

Una permutación es una disposición de objetos en un orden específico. ¡Puede permutar una cadena de longitud n en n! formas.

En este artículo, aprenderá a encontrar todas las permutaciones de una cadena determinada utilizando C ++, Python, JavaScript y C.

¿Cómo funcionan las permutaciones?

Digamos que tienes cuerda str con "MUO" como valores de cadena. Se le ha pedido que muestre las permutaciones de la cadena. Así es como lo haría:

Ejemplo 1: Let str = "MUO"

Las permutaciones de "MUO" son:

  • "MUO"
  • "MOU"
  • "UMO"
  • "UOM"
  • "OUM"
  • "OMU"

Tenga en cuenta el orden de los valores. Aquí hay otro ejemplo:

Ejemplo 2: Sea str = "AB"

Todas las permutaciones de "AB" son:

  • "AB"
  • "LICENCIADO EN LETRAS"

También puede imprimir permutaciones duplicadas si hay caracteres repetidos en la cadena dada. (ABBA, por ejemplo)

Ahora que comprende cómo funcionan las permutaciones, echemos un vistazo a cómo puede encontrarlas utilizando su lenguaje de programación preferido.

instagram viewer

Nota: Hemos diseñado los siguientes ejemplos de código para generar permutaciones para tres cadenas: MUO, AB y XYZ. Si desea utilizar alguno de estos códigos, cópielos y cambie estas cadenas para que se ajusten a su proyecto.

Relacionado: Cómo convertir caracteres de una cadena al caso opuesto con programación

Programa C ++ para imprimir todas las permutaciones de una cadena

A continuación se muestra el programa C ++ para imprimir todas las permutaciones de una cadena:

// Programa C ++ para imprimir todo
// permutaciones de una cadena
#incluir
usando el espacio de nombres std;
// Función para imprimir permutaciones de cadena
void findPermutations (cadena str, int leftIndex, int rightIndex)
{
si (leftIndex == rightIndex)
{
cout << str << endl;
}
demás
{
para (int i = leftIndex; i <= rightIndex; i ++)
{
swap (str [leftIndex], str [i]);
findPermutations (str, leftIndex + 1, rightIndex);
//backtrack
swap (str [leftIndex], str [i]);
}
}
}
// Código del conductor
int main ()
{
string str1 = "MUO";
int tamaño1 = str1.size ();
cout << "cadena1:" << cadena1 << endl;
cout << "Permutaciones de" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
string str2 = "AB";
int tamaño2 = str2.size ();
cout << "str2:" << str2 << endl;
cout << "Permutaciones de" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
string str3 = "XYZ";
int tamaño3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Permutaciones de" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
return 0;
}

Producción:

str1: MUO
Permutaciones de MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutaciones de AB:
AB
licenciado en Letras
str3: XYZ
Permutaciones de XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Relacionado: Cómo comprobar si una cadena es simétrica con la programación

Programa Python para imprimir todas las permutaciones de una cadena

A continuación, está el código Python para imprimir todas las permutaciones de una cadena:

# Programa de Python para imprimir todo
# permutaciones de una cadena
def convertToString (Lista):
return '' .join (Lista)
# Función para imprimir permutaciones de cadena
def findPermutations (s, leftIndex, rightIndex):
si leftIndex == rightIndex:
imprimir (convertToString (s))
demás:
para i en el rango (leftIndex, rightIndex + 1):
s [leftIndex], s [i] = s [i], s [leftIndex]
findPermutations (s, leftIndex + 1, rightIndex)
# retractarse
s [leftIndex], s [i] = s [i], s [leftIndex]
# Código del conductor
str1 = "MUO"
tamaño1 = len (str1)
s1 = lista (str1)
print ("cadena1:", cadena1)
print ("Permutaciones de", str1, ":")
findPermutations (s1, 0, size1-1)
str2 = "AB"
tamaño2 = len (str2)
s2 = lista (str2)
print ("cadena2:", cadena2)
print ("Permutaciones de", str2, ":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
tamaño3 = len (str3)
s3 = lista (str3)
print ("str3:", str3)
print ("Permutaciones de", str3, ":")
findPermutations (s3, 0, size3-1)

Producción:

str1: MUO
Permutaciones de MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutaciones de AB:
AB
licenciado en Letras
str3: XYZ
Permutaciones de XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Relacionado: Cómo comprobar si dos cadenas son anagramas entre sí

Programa JavaScript para imprimir todas las permutaciones de una cadena

Así es como imprime permutaciones en JavaScript:

// programa JavaScript para imprimir todo
// permutaciones de una cadena
// Función para intercambiar caracteres de la cadena
función de intercambio (str, leftIndex, i) {
dejar temp;
let tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = temp;
return (tempArray) .join ("");
}
// Función para imprimir permutaciones de cadena
función findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.write (str + "
");
} demás {
para (sea i = leftIndex; i <= rightIndex; i ++) {
str = swap (str, leftIndex, i);
findPermutations (str, leftIndex + 1, rightIndex);
//backtrack
str = swap (str, leftIndex, i) ;;
}
}
}
// Código del conductor
var str1 = "MUO";
var size1 = str1.length;
document.write ("str1:" + str1 + "
");
document.write ("Permutaciones de" + str1 + ":" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB";
var size2 = str2.length;
document.write ("str2:" + str2 + "
");
document.write ("Permutaciones de" + str2 + ":" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ";
var size3 = str3.length;
document.write ("str3:" + str3 + "
");
document.write ("Permutaciones de" + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);

Producción:

str1: MUO
Permutaciones de MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutaciones de AB:
AB
licenciado en Letras
str3: XYZ
Permutaciones de XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Relacionado: Cómo completar el desafío FizzBuzz en 5 lenguajes de programación

Programa C para imprimir todas las permutaciones de una cadena

A continuación se muestra un programa en C que imprime todas las permutaciones de una cadena:

// Programa en C para imprimir todo
// permutaciones de una cadena
#incluir
#incluir
// Función para intercambiar caracteres de la cadena
intercambio vacío (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = temp;
}
// Función para imprimir permutaciones de cadena
void findPermutations (char str [], int leftIndex, int rightIndex)
{
si (leftIndex == rightIndex)
{
printf ("% s \ ⁠n", str);
}
demás
{
para (int i = leftIndex; i <= rightIndex; i ++)
{
swap (str, leftIndex, i);
findPermutations (str, leftIndex + 1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Código del conductor
int main ()
{
char str1 [] = "MUO";
int tamaño1 = strlen (str1);
printf ("cadena1:% s \ ⁠n", cadena1);
printf ("Permutaciones de% s: \ ⁠n", str1);
findPermutations (str1, 0, size1-1);
char str2 [] = "AB";
int tamaño2 = strlen (str2);
printf ("cadena2:% s \ ⁠n", cadena2);
printf ("Permutaciones de% s: \ ⁠n", str2);
findPermutations (str2, 0, size2-1);
char str3 [] = "XYZ";
int tamaño3 = strlen (str3);
printf ("cadena3:% s \ ⁠n", cadena3);
printf ("Permutaciones de% s: \ ⁠n", str3);
findPermutations (str3, 0, size3-1);
return 0;
}

Producción:

str1: MUO
Permutaciones de MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutaciones de AB:
AB
licenciado en Letras
str3: XYZ
Permutaciones de XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Imprimir permutaciones es fácil

En este artículo, ha aprendido a imprimir todas las permutaciones de una cadena en varios lenguajes de programación. Si bien estos programas de muestra no son la única forma de manejar las permutaciones, son un gran comienzo para aquellos que son nuevos en su uso en su código.

CuotaPíoCorreo electrónico
Los 11 mejores sitios para cursos gratuitos de programación informática en línea

Con estos cursos gratuitos de programación de computadoras en línea, puede convertirse en un gran codificador sin un título en ciencias de la computación.

Leer siguiente

Temas relacionados
  • Programación
  • Programación
  • Programación en C
  • JavaScript
  • Pitón
Sobre el Autor
Yuvraj Chandra (58 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