De Yuvraj Chandra
AcțiuneTweetE-mail

Trebuie să imprimați permutările unui șir? Vă vom arăta cum în mai multe limbi.

O permutare este un aranjament de obiecte într-o ordine specifică. Puteți permuta un șir de lungime n în n! căi.

În acest articol, veți afla cum să găsiți toate permutările unui șir dat folosind C ++, Python, JavaScript și C.

Cum funcționează permutațiile?

Să presupunem că ai șir str cu „MUO” ca valori ale șirului. Vi s-a cerut să arătați permutările șirului. Iată cum ați face acest lucru:

Exemplul 1: Let str = "MUO”

Permutările „MUO” sunt:

  • „MUO”
  • „MOU”
  • „UMO”
  • „UOM”
  • „OUM”
  • „OMU”

Rețineți ordinea valorilor. Iată un alt exemplu:

Exemplul 2: Let str = "AB”

Toate permutările „AB” sunt:

  • „AB”
  • „BA”

De asemenea, puteți imprima permutări duplicate dacă există caractere repetate în șirul dat. (ABBA, de exemplu)

Acum că înțelegeți cum funcționează permutările, să aruncăm o privire la modul în care le puteți găsi folosind limbajul de programare preferat.

instagram viewer

Notă: Am proiectat următoarele exemple de cod pentru a produce permutări pentru trei șiruri: MUO, AB și XYZ. Dacă doriți să utilizați oricare dintre aceste coduri, copiați-le și modificați aceste șiruri pentru a se potrivi proiectului dvs.

Legate de: Cum se convertesc caracterele unui șir în carcasa opusă cu programarea

Program C ++ pentru a imprima toate permutările unui șir

Mai jos este programul C ++ pentru a imprima toate permutările unui șir:

// C ++ program pentru a imprima toate
// permutări ale unui șir
#include
folosind spațiul de nume std;
// Funcția de imprimare a permutațiilor șirului
void findPermutations (șir str, int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
cout << str << endl;
}
altceva
{
for (int i = leftIndex; i <= rightIndex; i ++)
{
swap (str [leftIndex], str [i]);
findPermutations (str, leftIndex + 1, rightIndex);
//backtrack
swap (str [leftIndex], str [i]);
}
}
}
// Cod șofer
int main ()
{
șir str1 = "MUO";
int size1 = str1.size ();
cout << "str1:" << str1 << endl;
cout << "Permutări ale" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
șir str2 = "AB";
int size2 = str2.size ();
cout << "str2:" << str2 << endl;
cout << "Permutări ale" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
șir str3 = "XYZ";
int size3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Permutări ale" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
retur 0;
}

Ieșire:

str1: MUO
Permutări ale MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutări ale AB:
AB
BA
str3: XYZ
Permutări ale XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Legate de: Cum se verifică dacă un șir este simetric cu programarea

Program Python pentru a imprima toate permutările unui șir

Apoi, este codul Python pentru a imprima toate permutările unui șir:

# Program Python pentru a imprima toate
# permutări ale unui șir
def convertToString (Listă):
return '' .join (List)
# Funcția de imprimare a permutațiilor șirului
def findPermutations (s, leftIndex, rightIndex):
dacă leftIndex == rightIndex:
print (convertToString (s))
altceva:
pentru i în interval (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]
# Cod șofer
str1 = "MUO"
size1 = len (str1)
s1 = list (str1)
print ("str1:", str1)
print ("Permutări ale", str1, ":")
findPermutations (s1, 0, size1-1)
str2 = "AB"
size2 = len (str2)
s2 = list (str2)
print ("str2:", str2)
print ("Permutări ale", str2, ":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
size3 = len (str3)
s3 = list (str3)
print ("str3:", str3)
print ("Permutări ale", str3, ":")
findPermutations (s3, 0, size3-1)

Ieșire:

str1: MUO
Permutări ale MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutări ale AB:
AB
BA
str3: XYZ
Permutări ale XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Legate de: Cum să verificați dacă două șiruri sunt anagrame unele de altele

Program JavaScript pentru a imprima toate permutările unui șir

Iată cum tipăriți permutări în JavaScript:

// Program JavaScript pentru a imprima toate
// permutări ale unui șir
// Funcția de a schimba caracterele șirului
swap de funcții (str, leftIndex, i) {
lasa temp;
let tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = temp;
return (tempArray) .join ("");
}
// Funcția de imprimare a permutațiilor șirului
funcție findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.write (str + "
");
} altceva {
for (let i = leftIndex; i <= rightIndex; i ++) {
str = swap (str, leftIndex, i);
findPermutations (str, leftIndex + 1, rightIndex);
//backtrack
str = swap (str, leftIndex, i) ;;
}
}
}
// Cod șofer
var str1 = "MUO";
var size1 = str1.length;
document.write ("str1:" + str1 + "
");
document.write ("Permutări ale" + str1 + ":" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB";
var size2 = str2.length;
document.write ("str2:" + str2 + "
");
document.write ("Permutări ale" + str2 + ":" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ";
var size3 = str3.length;
document.write ("str3:" + str3 + "
");
document.write ("Permutări ale" + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);

Ieșire:

str1: MUO
Permutări ale MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutări ale AB:
AB
BA
str3: XYZ
Permutări ale XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Legate de: Cum să finalizați provocarea FizzBuzz în 5 limbaje de programare

Program C pentru a imprima toate permutările unui șir

Mai jos este un program C care tipărește toate permutările unui șir:

// C program pentru a imprima toate
// permutări ale unui șir
#include
#include
// Funcția de a schimba caracterele șirului
swap nul (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = temp;
}
// Funcția de imprimare a permutațiilor șirului
void findPermutations (char str [], int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
printf ("% s \ ⁠n", str);
}
altceva
{
for (int i = leftIndex; i <= rightIndex; i ++)
{
swap (str, leftIndex, i);
findPermutations (str, leftIndex + 1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Cod șofer
int main ()
{
char str1 [] = "MUO";
int size1 = strlen (str1);
printf ("str1:% s \ ⁠n", str1);
printf ("Permutări de% s: \ ⁠n", str1);
findPermutations (str1, 0, size1-1);
char str2 [] = "AB";
int size2 = strlen (str2);
printf ("str2:% s \ ⁠n", str2);
printf ("Permutări de% s: \ ⁠n", str2);
findPermutations (str2, 0, size2-1);
char str3 [] = "XYZ";
int size3 = strlen (str3);
printf ("str3:% s \ ⁠n", str3);
printf ("Permutări de% s: \ ⁠n", str3);
findPermutations (str3, 0, size3-1);
retur 0;
}

Ieșire:

str1: MUO
Permutări ale MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutări ale AB:
AB
BA
str3: XYZ
Permutări ale XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Permutările de imprimare sunt ușoare

În acest articol, ați învățat cum să imprimați toate permutările unui șir în mai multe limbaje de programare. În timp ce aceste eșantioane de programe nu sunt singura modalitate de a gestiona permutările, ele sunt un început excelent pentru cei care sunt noi în a le folosi în codul lor.

AcțiuneTweetE-mail
Cele mai bune 11 site-uri pentru cursuri de programare online gratuite

Folosind aceste cursuri gratuite de programare online, puteți deveni un programator excelent fără o diplomă în informatică.

Citiți în continuare

Subiecte asemănătoare
  • Programare
  • Programare
  • Programare C
  • JavaScript
  • Piton
Despre autor
Yuvraj Chandra (58 articole publicate)

Yuvraj este student la Universitatea din Delhi, India. Este pasionat de dezvoltarea web Full Stack. Când nu scrie, explorează profunzimea diferitelor tehnologii.

Mai multe de la Yuvraj Chandra

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona