Door Yuvraj Chandra
DeelTweetenE-mail

Wilt u de permutaties van een string afdrukken? We laten u zien hoe in verschillende talen.

Een permutatie is een rangschikking van objecten in een bepaalde volgorde. Je kunt een string met lengte n permuteren in n! manieren.

In dit artikel leert u hoe u alle permutaties van een bepaalde tekenreeks kunt vinden met behulp van C++, Python, JavaScript en C.

Hoe werken permutaties?

Laten we zeggen dat je een string hebt str met "MUO" als de tekenreekswaarden. U bent gevraagd om de permutaties van de string te tonen. Hier is hoe je het zou aanpakken:

voorbeeld 1: Laat str = "MUO"

De permutaties van "MUO" zijn:

  • “MUO”
  • "MOU"
  • “UMO”
  • "UOM"
  • “OMM”
  • “OMU”

Let op de volgorde van de waarden. Hier is nog een voorbeeld:

Voorbeeld 2: Laat str = "AB"

Alle permutaties van "AB" zijn:

  • "AB"
  • “BA”

U kunt ook dubbele permutaties afdrukken als er herhalende tekens in de gegeven tekenreeks zijn. (ABBA, bijvoorbeeld)

instagram viewer

Nu u begrijpt hoe permutaties werken, gaan we eens kijken hoe u ze kunt vinden met uw favoriete programmeertaal.

Opmerking: We hebben de volgende codevoorbeelden ontworpen om permutaties uit te voeren voor drie strings: MUO, AB en XYZ. Als u een van deze code wilt gebruiken, kopieer deze dan en wijzig deze tekenreeksen zodat ze bij uw project passen.

Verwant: Tekens van een tekenreeks converteren naar het tegenovergestelde geval met programmeren

C++-programma om alle permutaties van een string af te drukken

Hieronder staat het C++ programma om alle permutaties van een string af te drukken:

// C++ programma om alles af te drukken
// permutaties van een string
#erbij betrekken
namespace std; gebruiken;
// Functie om permutaties van string af te drukken
void findPermutaties (string str, int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
cout << str << endl;
}
anders
{
voor (int i = leftIndex; ik <= rechtsIndex; ik++)
{
swap (str[leftIndex], str[i]);
findPermutaties (str, leftIndex+1, rightIndex);
//backtrack
swap (str[leftIndex], str[i]);
}
}
}
// Bestuurderscode
int hoofd()
{
string str1 = "MUO";
int size1 = str1.size();
cout << "str1: " << str1 << endl;
cout << "Permutaties van " << str1 << ":" << endl;
findPermutaties (str1, 0, size1-1);
string str2 = "AB";
int size2 = str2.size();
cout << "str2: " << str2 << endl;
cout << "Permutaties van " << str2 << ":" << endl;
findPermutaties (str2, 0, size2-1);
string str3 = "XYZ";
int size3 = str3.size();
cout << "str3: " << str3 << endl;
cout << "Permutaties van " << str3 << ":" << endl;
findPermutaties (str3, 0, size3-1);
retourneer 0;
}

Uitgang::

str1: MUO
Permutaties van MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutaties van AB:
AB
BA
str3: XYZ
Permutaties van XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Verwant: Hoe te controleren of een string symmetrisch is met programmeren?

Python-programma om alle permutaties van een string af te drukken

De volgende is de Python-code om alle permutaties van een string af te drukken:

# Python-programma om alles af te drukken
# permutaties van een string
def convertToString (Lijst):
return ''.join (Lijst)
# Functie om permutaties van string af te drukken
def findPermutaties (s, leftIndex, rightIndex):
if leftIndex == rightIndex:
print (convertToString (s))
anders:
voor i binnen bereik (leftIndex, rightIndex+1):
s[leftIndex], s[i] = s[i], s[leftIndex]
findPermutaties (s, leftIndex+1, rightIndex)
# teruglopen
s[leftIndex], s[i] = s[i], s[leftIndex]
# Bestuurderscode
str1 = "MUO"
maat1 = len (str1)
s1 = lijst (str1)
print("str1:", str1)
print("Permutaties van", str1,":")
findPermutaties (s1, 0, maat1-1)
str2 = "AB"
maat2 = len (str2)
s2 = lijst (str2)
print("str2:", str2)
print("Permutaties van", str2,":")
findPermutaties (s2, 0, size2-1)
str3 = "XYZ"
maat3 = len (str3)
s3 = lijst (str3)
print("str3:", str3)
print("Permutaties van", str3,":")
findPermutaties (s3, 0, size3-1)

Uitgang::

str1: MUO
Permutaties van MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutaties van AB:
AB
BA
str3: XYZ
Permutaties van XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Verwant: Hoe te controleren of twee strings anagrammen van elkaar zijn?

JavaScript-programma om alle permutaties van een string af te drukken

Zo drukt u permutaties af in JavaScript:

// JavaScript-programma om alles af te drukken
// permutaties van een string
// Functie om karakters van de string te wisselen
functiewissel (str, leftIndex, i) {
laat temp;
laat tempArray = str.split("");
temp = tempArray[leftIndex];
tempArray[leftIndex] = tempArray[i];
tempArray[i] = temp;
return (tempArray).join("");
}
// Functie om permutaties van string af te drukken
functie findPermutaties (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.schrijven (str + "
");
} anders {
voor (laat i = leftIndex; ik <= rechtsIndex; ik++) {
str = swap (str, leftIndex, i);
findPermutaties (str, leftIndex+1, rightIndex);
//backtrack
str = swap (str, leftIndex, i);;
}
}
}
// Bestuurderscode
var str1 = "MUO";
var size1 = str1.lengte;
document.write("str1: " + str1 + "
");
document.write("Permutaties van " + str1 + ":" + "
");
findPermutaties (str1, 0, size1-1);
var str2 = "AB";
var size2 = str2.lengte;
document.write("str2: " + str2 + "
");
document.write("Permutaties van " + str2 + ":" + "
");
findPermutaties (str2, 0, size2-1);
var str3 = "XYZ";
var size3 = str3.lengte;
document.write("str3: " + str3 + "
");
document.write("Permutaties van " + str3 + ":" + "
");
findPermutaties (str3, 0, size3-1);

Uitgang::

str1: MUO
Permutaties van MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutaties van AB:
AB
BA
str3: XYZ
Permutaties van XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Verwant: De FizzBuzz-uitdaging voltooien in 5 programmeertalen

C Programma om alle permutaties van een string af te drukken

Hieronder staat een C-programma dat alle permutaties van een string afdrukt:

// C-programma om alles af te drukken
// permutaties van een string
#erbij betrekken
#erbij betrekken
// Functie om karakters van de string te wisselen
void swap (char str[], int leftIndex, int i)
{
char temp = str [leftIndex];
str[leftIndex] = str[i];
str[i] = temperatuur;
}
// Functie om permutaties van string af te drukken
void findPermutaties (char str[], int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
printf("%s \⁠n", str);
}
anders
{
voor (int i = leftIndex; ik <= rechtsIndex; ik++)
{
swap (str, leftIndex, i);
findPermutaties (str, leftIndex+1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Bestuurderscode
int hoofd()
{
char str1[] = "MUO";
int size1 = strlen (str1);
printf("str1: %s \⁠n", str1);
printf("Permutaties van %s: \⁠n", str1);
findPermutaties (str1, 0, size1-1);
char str2[] ​​= "AB";
int size2 = strlen (str2);
printf("str2: %s \⁠n", str2);
printf("Permutaties van %s: \⁠n", str2);
findPermutaties (str2, 0, size2-1);
char str3[] = "XYZ";
int size3 = strlen (str3);
printf("str3: %s \⁠n", str3);
printf("Permutaties van %s: \⁠n", str3);
findPermutaties (str3, 0, size3-1);
retourneer 0;
}

Uitgang::

str1: MUO
Permutaties van MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutaties van AB:
AB
BA
str3: XYZ
Permutaties van XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Permutaties afdrukken is eenvoudig

In dit artikel heb je geleerd hoe je alle permutaties van een string in verschillende programmeertalen kunt afdrukken. Hoewel deze voorbeeldprogramma's niet de enige manier zijn om met permutaties om te gaan, zijn ze een goed begin voor degenen die ze voor het eerst in hun code gebruiken.

DeelTweetenE-mail
De 11 beste sites voor gratis online computerprogrammeercursussen

Met behulp van deze gratis online computerprogrammeercursussen kun je een geweldige programmeur worden zonder een diploma informatica.

Lees volgende

Gerelateerde onderwerpen
  • Programmeren
  • Programmeren
  • C Programmeren
  • JavaScript
  • Python
Over de auteur
Yuvraj Chandra (58 artikelen gepubliceerd)

Yuvraj is een student Computerwetenschappen aan de Universiteit van Delhi, India. Hij is gepassioneerd door Full Stack Web Development. Als hij niet aan het schrijven is, onderzoekt hij de diepte van verschillende technologieën.

Meer van Yuvraj Chandra

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren