Cómo imprimir todas las permutaciones de una cadena dada en C, C ++, JavaScript y Python
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 tiene una cadena 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 : Sea 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.
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.
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:
// C++ program to print all
// permutations of a string
#include <bits/stdc++.h>
using namespace std;
// Function to print permutations of string
void findPermutations(string str, int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
cout << str << endl;
}
else
{
for (int i = leftIndex; i <= rightIndex; i++)
{
swap(str[leftIndex], str[i]);
findPermutations(str, leftIndex+1, rightIndex);
//backtrack
swap(str[leftIndex], str[i]);
}
}
}
// Driver Code
int main()
{
string str1 = "MUO";
int size1 = str1.size();
cout << "str1: " << str1 << endl;
cout << "Permutations of " << str1 << ":" << endl;
findPermutations(str1, 0, size1-1);
string str2 = "AB";
int size2 = str2.size();
cout << "str2: " << str2 << endl;
cout << "Permutations of " << str2 << ":" << endl;
findPermutations(str2, 0, size2-1);
string str3 = "XYZ";
int size3 = str3.size();
cout << "str3: " << str3 << endl;
cout << "Permutations of " << str3 << ":" << endl;
findPermutations(str3, 0, size3-1);
return 0;
}
Salida :
str1: MUO
Permutations of MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutations of AB:
AB
BA
str3: XYZ
Permutations of XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
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:
# Python program to print all
# permutations of a string
def convertToString(List):
return ''.join(List)
# Function to print permutations of string
def findPermutations(s, leftIndex, rightIndex):
if leftIndex == rightIndex:
print(convertToString(s))
else:
for i in range(leftIndex, rightIndex+1):
s[leftIndex], s[i] = s[i], s[leftIndex]
findPermutations(s, leftIndex+1, rightIndex)
# backtrack
s[leftIndex], s[i] = s[i], s[leftIndex]
# Driver Code
str1 = "MUO"
size1 = len(str1)
s1 = list(str1)
print("str1:", str1)
print("Permutations of", str1,":")
findPermutations(s1, 0, size1-1)
str2 = "AB"
size2 = len(str2)
s2 = list(str2)
print("str2:", str2)
print("Permutations of", str2,":")
findPermutations(s2, 0, size2-1)
str3 = "XYZ"
size3 = len(str3)
s3 = list(str3)
print("str3:", str3)
print("Permutations of", str3,":")
findPermutations(s3, 0, size3-1)
Salida :
str1: MUO
Permutations of MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutations of AB:
AB
BA
str3: XYZ
Permutations of XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Programa JavaScript para imprimir todas las permutaciones de una cadena
Así es como imprime permutaciones en JavaScript:
// JavaScript program to print all
// permutations of a string
// Function to swap characters of the string
function swap(str, leftIndex, i) {
let temp;
let tempArray = str.split("");
temp = tempArray[leftIndex] ;
tempArray[leftIndex] = tempArray[i];
tempArray[i] = temp;
return (tempArray).join("");
}
// Function to print permutations of string
function findPermutations(str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.write(str + "<br>");
} else {
for (let i = leftIndex; i <= rightIndex; i++) {
str = swap(str, leftIndex, i);
findPermutations(str, leftIndex+1, rightIndex);
//backtrack
str = swap(str, leftIndex, i);;
}
}
}
// Driver Code
var str1 = "MUO";
var size1 = str1.length;
document.write("str1: " + str1 + "<br>");
document.write("Permutations of " + str1 + ":" + "<br>");
findPermutations(str1, 0, size1-1);
var str2 = "AB";
var size2 = str2.length;
document.write("str2: " + str2 + "<br>");
document.write("Permutations of " + str2 + ":" + "<br>");
findPermutations(str2, 0, size2-1);
var str3 = "XYZ";
var size3 = str3.length;
document.write("str3: " + str3 + "<br>");
document.write("Permutations of " + str3 + ":" + "<br>");
findPermutations(str3, 0, size3-1);
Salida :
str1: MUO
Permutations of MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutations of AB:
AB
BA
str3: XYZ
Permutations of XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
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:
// C program to print all
// permutations of a string
#include <stdio.h>
#include <string.h>
// Function to swap characters of the string
void swap(char str[], int leftIndex, int i)
{
char temp = str[leftIndex];
str[leftIndex] = str[i];
str[i] = temp;
}
// Function to print permutations of string
void findPermutations(char str[], int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
printf("%s n", str);
}
else
{
for (int i = leftIndex; i <= rightIndex; i++)
{
swap(str, leftIndex, i);
findPermutations(str, leftIndex+1, rightIndex);
//backtrack
swap(str, leftIndex, i);
}
}
}
// Driver Code
int main()
{
char str1[] = "MUO";
int size1 = strlen(str1);
printf("str1: %s n", str1);
printf("Permutations of %s: n", str1);
findPermutations(str1, 0, size1-1);
char str2[] = "AB";
int size2 = strlen(str2);
printf("str2: %s n", str2);
printf("Permutations of %s: n", str2);
findPermutations(str2, 0, size2-1);
char str3[] = "XYZ";
int size3 = strlen(str3);
printf("str3: %s n", str3);
printf("Permutations of %s: n", str3);
findPermutations(str3, 0, size3-1);
return 0;
}
Salida :
str1: MUO
Permutations of MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutations of AB:
AB
BA
str3: XYZ
Permutations of 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 permutaciones, son un gran comienzo para aquellos que son nuevos en su uso en su código.