Behöver du skriva ut permutationerna för en sträng? Vi visar dig hur på flera språk.
En permutation är ett arrangemang av objekt i en specifik ordning. Du kan permutera en sträng med längden n i n! sätt.
I den här artikeln lär du dig hur du hittar alla permutationer av en given sträng med C ++, Python, JavaScript och C.
Hur fungerar permutationer?
Låt oss säga att du har sträng str med "MUO" som strängvärden. Du har blivit ombedd att visa strängens permutationer. Så här skulle du gå till väga:
Exempel 1: Låt str = "MUO"
Permutationerna för "MUO" är:
- “MUO”
- "MOU"
- “UMO”
- “UOM”
- “OUM”
- “OMU”
Notera ordningen på värdena. Här är ett annat exempel:
Exempel 2: Låt str = "AB"
Alla permutationer för “AB” är:
- “AB”
- “BA”
Du kan också skriva ut dubbletter av permutationer om det finns upprepade tecken i den angivna strängen. (ABBA, till exempel)
Nu när du förstår hur permutationer fungerar, låt oss ta en titt på hur du kan hitta dem med ditt föredragna programmeringsspråk.
Notera: Vi har utformat följande kodexempel för att mata ut permutationer för tre strängar: MUO, AB och XYZ. Om du vill använda någon av den här koden, kopiera den och ändra dessa strängar så att de passar ditt projekt.
Relaterad: Hur man konverterar tecken i en sträng till det motsatta fallet med programmering
C ++ - program för att skriva ut alla permutationer av en sträng
Nedan visas C ++ - programmet för att skriva ut alla permutationer av en sträng:
// C ++ - program för att skriva ut allt
// permutationer av en sträng
#omfatta
med namnutrymme std;
// Funktion för att skriva ut permutationer av sträng
void findPermutations (string str, int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
cout << str << endl;
}
annan
{
för (int i = leftIndex; i <= rightIndex; jag ++)
{
swap (str [leftIndex], str [i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str [leftIndex], str [i]);
}
}
}
// Förarkod
int main ()
{
string str1 = "MUO";
int size1 = str1.size ();
cout << "str1:" << str1 << endl;
cout << "Permutationer av" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
string str2 = "AB";
int size2 = str2.size ();
cout << "str2:" << str2 << endl;
cout << "Permutationer av" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
string str3 = "XYZ";
int size3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Permutationer av" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
returnera 0;
}
Produktion:
str1: MUO
Permutationer av MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutationer av AB:
AB
BA
str3: XYZ
Permutationer av XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Relaterad: Hur man kontrollerar om en sträng är symmetrisk med programmering
Python -program för att skriva ut alla permutationer av en sträng
Därefter är Python -koden för att skriva ut alla permutationer av en sträng:
# Python -program för att skriva ut allt
# permutationer av en sträng
def convertToString (lista):
return '' .join (List)
# Funktion för att skriva ut permutationer av sträng
def findPermutations (s, leftIndex, rightIndex):
om leftIndex == rightIndex:
print (convertToString (s))
annan:
för i inom intervallet (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]
# Förarkod
str1 = "MUO"
storlek1 = len (str1)
s1 = lista (str1)
print ("str1:", str1)
print ("Permutationer av", str1, ":")
findPermutations (s1, 0, size1-1)
str2 = "AB"
storlek2 = len (str2)
s2 = lista (str2)
print ("str2:", str2)
print ("Permutationer av", str2, ":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
size3 = len (str3)
s3 = lista (str3)
print ("str3:", str3)
print ("Permutationer av", str3, ":")
findPermutations (s3, 0, size3-1)
Produktion:
str1: MUO
Permutationer av MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutationer av AB:
AB
BA
str3: XYZ
Permutationer av XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Relaterad: Hur man kontrollerar om två strängar är anagram över varandra
JavaScript -program för att skriva ut alla permutationer av en sträng
Så här skriver du ut permutationer i JavaScript:
// JavaScript -program för att skriva ut allt
// permutationer av en sträng
// Funktion för att byta tecken i strängen
funktionsbyte (str, leftIndex, i) {
låt temp;
låt tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = temp;
return (tempArray) .join ("");
}
// Funktion för att skriva ut permutationer av sträng
function findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.write (str + "
");
} annat {
för (låt i = leftIndex; i <= rightIndex; jag ++) {
str = swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = swap (str, leftIndex, i) ;;
}
}
}
// Förarkod
var str1 = "MUO";
var size1 = str1.length;
document.write ("str1:" + str1 + "
");
document.write ("Permutationer av" + str1 + ":" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB";
var size2 = str2.length;
document.write ("str2:" + str2 + "
");
document.write ("Permutationer av" + str2 + ":" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ";
var size3 = str3.length;
document.write ("str3:" + str3 + "
");
document.write ("Permutationer av" + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);
Produktion:
str1: MUO
Permutationer av MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutationer av AB:
AB
BA
str3: XYZ
Permutationer av XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Relaterad: Hur man genomför FizzBuzz -utmaningen på 5 programmeringsspråk
C Program för att skriva ut alla permutationer av en sträng
Nedan visas ett C -program som skriver ut alla permutationer av en sträng:
// C -program för att skriva ut allt
// permutationer av en sträng
#omfatta
#omfatta
// Funktion för att byta tecken i strängen
void swap (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = temp;
}
// Funktion för att skriva ut permutationer av sträng
void findPermutations (char str [], int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
printf ("%s \ n", str);
}
annan
{
för (int i = leftIndex; i <= rightIndex; jag ++)
{
swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Förarkod
int main ()
{
char str1 [] = "MUO";
int size1 = strlen (str1);
printf ("str1: %s \ n", str1);
printf ("Permutationer av %s: \ n", str1);
findPermutations (str1, 0, size1-1);
char str2 [] = "AB";
int size2 = strlen (str2);
printf ("str2: %s \ n", str2);
printf ("Permutationer av %s: \ n", str2);
findPermutations (str2, 0, size2-1);
char str3 [] = "XYZ";
int size3 = strlen (str3);
printf ("str3: %s \ n", str3);
printf ("Permutationer av %s: \ n", str3);
findPermutations (str3, 0, size3-1);
returnera 0;
}
Produktion:
str1: MUO
Permutationer av MUO:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Permutationer av AB:
AB
BA
str3: XYZ
Permutationer av XYZ:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Det är enkelt att skriva ut permutationer
I den här artikeln har du lärt dig hur du skriver ut alla permutationer av en sträng på flera programmeringsspråk. Även om dessa exempelprogram inte är det enda sättet att hantera permutationer, är de en bra start för dem som är nya för att använda dem i sin kod.
Genom att använda dessa gratis dataprogrammeringskurser online kan du bli en bra kodare utan datavetenskapsexamen.
Läs Nästa
- Programmering
- Programmering
- C Programmering
- JavaScript
- Pytonorm
Yuvraj är en datavetenskaplig grundstudent vid University of Delhi, Indien. Han brinner för Full Stack webbutveckling. När han inte skriver utforskar han djupet i olika tekniker.
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e -böcker och exklusiva erbjudanden!
Klicka här för att prenumerera