Par Yuvraj Chandra
PartagerTweeterE-mail

Besoin d'imprimer les permutations d'une chaîne? Nous vous montrerons comment faire en plusieurs langues.

Une permutation est un arrangement d'objets dans un ordre spécifique. Vous pouvez permuter une chaîne de longueur n en n! façons.

Dans cet article, vous apprendrez à trouver toutes les permutations d'une chaîne donnée à l'aide de C++, Python, JavaScript et C.

Comment fonctionnent les permutations ?

Disons que vous avez de la ficelle str avec « MUO » comme valeurs de chaîne. On vous a demandé d'afficher les permutations de la chaîne. Voici comment vous vous y prendriez:

Exemple 1: Soit str = "MUO"

Les permutations de « MUO » sont:

  • "MUO"
  • "MOU"
  • « UMO »
  • « UOM »
  • "OUM"
  • « OMOU »

Notez l'ordre des valeurs. Voici un autre exemple:

Exemple 2: Soit str = "AB"

Toutes les permutations de « AB » sont:

  • "UN B"
  • "BA"

Vous pouvez également imprimer des permutations en double s'il y a des caractères répétés dans la chaîne donnée. (ABBA, par exemple)

Maintenant que vous comprenez comment fonctionnent les permutations, voyons comment vous pouvez les trouver en utilisant votre langage de programmation préféré.

Noter: Nous avons conçu les exemples de code suivants pour générer des permutations pour trois chaînes: MUO, AB et XYZ. Si vous souhaitez utiliser l'un de ces codes, copiez-le et modifiez ces chaînes pour les adapter à votre projet.

En rapport: Comment convertir les caractères d'une chaîne dans le cas contraire avec la programmation

Programme C++ pour imprimer toutes les permutations d'une chaîne

Ci-dessous se trouve le programme C++ pour imprimer toutes les permutations d'une chaîne:

// Programme C++ pour tout imprimer
// permutations d'une chaîne
#comprendre
en utilisant l'espace de noms std ;
// Fonction pour imprimer les permutations de chaîne
void findPermutations (string str, int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
cout << str << endl;
}
autre
{
for (int i = leftIndex; i <= indexdroit; i++)
{
swap (str[leftIndex], str[i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str[leftIndex], str[i]);
}
}
}
// Code du pilote
int main()
{
chaîne str1 = "MUO" ;
int size1 = str1.size();
cout << "str1: " << str1 << endl;
cout << "Permutations de " << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
chaîne str2 = "AB" ;
int taille2 = str2.size();
cout << "str2: " << str2 << endl;
cout << "Permutations de " << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
chaîne str3 = "XYZ" ;
int taille3 = str3.size();
cout << "str3: " << str3 << endl;
cout << "Permutations de " << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
renvoie 0 ;
}

Sortir:

str1: MUO
Permutations de MUO :
MUO
PE
UMO
UdM
OUM
OMU
str2: AB
Permutations de AB :
UN B
BA
str3: XYZ
Permutations de XYZ :
XYZ
XZY
YXZ
YZX
ZYX
ZXY

En rapport: Comment vérifier si une chaîne est symétrique avec la programmation

Programme Python pour imprimer toutes les permutations d'une chaîne

Ensuite, est le code Python pour imprimer toutes les permutations d'une chaîne:

# Programme Python pour tout imprimer
# permutations d'une chaîne
def convertToString (Liste):
return ''.join (Liste)
# Fonction pour imprimer les permutations de chaîne
def findPermutations (s, leftIndex, rightIndex):
if leftIndex == rightIndex :
print (convertToString(s))
autre:
pour i dans la plage (leftIndex, rightIndex+1):
s[leftIndex], s[i] = s[i], s[leftIndex]
findPermutations (s, leftIndex+1, rightIndex)
# retour en arrière
s[leftIndex], s[i] = s[i], s[leftIndex]
# Code du pilote
str1 = "MUO"
size1 = len (str1)
s1 = liste (str1)
print("str1:", str1)
print("Permutations de", str1,":")
findPermutations (s1, 0, size1-1)
str2 = "AB"
size2 = len (str2)
s2 = liste (str2)
print("str2:", str2)
print("Permutations de", str2,":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
size3 = len (str3)
s3 = liste (str3)
print("str3:", str3)
print("Permutations de", str3,":")
findPermutations (s3, 0, size3-1)

Sortir:

str1: MUO
Permutations de MUO :
MUO
PE
UMO
UdM
OUM
OMU
str2: AB
Permutations de AB :
UN B
BA
str3: XYZ
Permutations de XYZ :
XYZ
XZY
YXZ
YZX
ZYX
ZXY

En rapport: Comment vérifier si deux chaînes sont des anagrammes l'une de l'autre

Programme JavaScript pour imprimer toutes les permutations d'une chaîne

Voici comment imprimer les permutations en JavaScript:

// Programme JavaScript pour tout imprimer
// permutations d'une chaîne
// Fonction pour permuter les caractères de la chaîne
échange de fonction (str, leftIndex, i) {
laisser temp;
let tempArray = str.split("");
temp = tempArray[leftIndex] ;
tableautemp[indexgauche] = tableautemp[i];
tableautemp[i] = temp;
return (tempArray).join("");
}
// Fonction pour imprimer les permutations de chaîne
fonction findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.write (str + "
");
} autre {
for (let i = leftIndex; i <= indexdroit; i++) {
str = échange (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = échange (str, leftIndex, i);;
}
}
}
// Code du pilote
var str1 = "MUO" ;
var size1 = str1.length;
document.write("str1: " + str1 + "
");
document.write("Permutations de " + str1 + ":" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB" ;
var size2 = str2.length;
document.write("str2: " + str2 + "
");
document.write("Permutations de " + str2 + ":" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ" ;
var size3 = str3.length;
document.write("str3: " + str3 + "
");
document.write("Permutations de " + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);

Sortir:

str1: MUO
Permutations de MUO :
MUO
PE
UMO
UdM
OUM
OMU
str2: AB
Permutations de AB :
UN B
BA
str3: XYZ
Permutations de XYZ :
XYZ
XZY
YXZ
YZX
ZYX
ZXY

En rapport: Comment relever le défi FizzBuzz dans 5 langages de programmation

Programme C pour imprimer toutes les permutations d'une chaîne

Vous trouverez ci-dessous un programme C qui imprime toutes les permutations d'une chaîne:

// programme C pour tout imprimer
// permutations d'une chaîne
#comprendre
#comprendre
// Fonction pour permuter les caractères de la chaîne
void swap (char str[], int leftIndex, int i)
{
char temp = str[leftIndex];
str[leftIndex] = str[i];
str[i] = temp;
}
// Fonction pour imprimer les permutations de chaîne
void findPermutations (char str[], int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
printf("%s \⁠n", str);
}
autre
{
for (int i = leftIndex; i <= indexdroit; i++)
{
swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Code du pilote
int main()
{
char str1[] = "MUO" ;
int size1 = strlen (str1) ;
printf("str1: %s \⁠n", str1) ;
printf("Permutations de %s: \⁠n", str1) ;
findPermutations (str1, 0, size1-1);
char str2[] ​​= "AB" ;
int size2 = strlen (str2);
printf("str2: %s \⁠n", str2) ;
printf("Permutations de %s: \⁠n", str2) ;
findPermutations (str2, 0, size2-1);
char str3[] = "XYZ" ;
int size3 = strlen (str3) ;
printf("str3: %s \⁠n", str3) ;
printf("Permutations de %s: \⁠n", str3) ;
findPermutations (str3, 0, size3-1);
renvoie 0 ;
}

Sortir:

str1: MUO
Permutations de MUO :
MUO
PE
UMO
UdM
OUM
OMU
str2: AB
Permutations de AB :
UN B
BA
str3: XYZ
Permutations de XYZ :
XYZ
XZY
YXZ
YZX
ZYX
ZXY

L'impression des permutations est facile

Dans cet article, vous avez appris à imprimer toutes les permutations d'une chaîne dans plusieurs langages de programmation. Bien que ces exemples de programmes ne soient pas le seul moyen de gérer les permutations, ils constituent un bon début pour ceux qui débutent dans leur utilisation dans leur code.

PartagerTweeterE-mail
Les 11 meilleurs sites pour des cours de programmation informatique en ligne gratuits

En utilisant ces cours de programmation informatique en ligne gratuits, vous pouvez devenir un excellent programmeur sans diplôme en informatique.

Lire la suite

Rubriques connexes
  • La programmation
  • La programmation
  • C Programmation
  • JavaScript
  • Python
A propos de l'auteur
Yuvraj Chandra (58 articles publiés)

Yuvraj est un étudiant de premier cycle en informatique à l'Université de Delhi, en Inde. Il est passionné par le développement Web Full Stack. Quand il n'écrit pas, il explore la profondeur de différentes technologies.

Plus de Yuvraj Chandra

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner