Yuvraj Chandra
RészvényCsipogEmail

Ki kell nyomtatnia a karakterlánc permutációit? Több nyelven megmutatjuk, hogyan.

A permutáció az objektumok meghatározott sorrendben történő elrendezése. Permutálhat egy n hosszúságú karakterláncot n -ben! módokon.

Ebben a cikkben megtudhatja, hogyan találhatja meg az adott karakterlánc összes permutációját C ++, Python, JavaScript és C használatával.

Hogyan működnek az engedélyezések?

Tegyük fel, hogy van húrja str a „MUO” karakterlánccal. Megkérték, hogy mutassa meg a karakterlánc permutációit. Így járjon el:

1. példa: Legyen str = "MUO"

A „MUO” permutációi a következők:

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

Vegye figyelembe az értékek sorrendjét. Itt egy másik példa:

2. példa: Legyen str = "AB"

Az „AB” összes permutációja a következő:

  • “AB”
  • “BA”

Kettős permutációkat is nyomtathat, ha ismétlődő karakterek vannak az adott karakterláncban. (Például ABBA)

Most, hogy megértette a permutációk működését, nézzük meg, hogyan találhatja meg őket a kívánt programozási nyelv használatával.

instagram viewer

jegyzet: Az alábbi kódpéldákat terveztük, hogy három karakterlánc permutációját adjuk ki: MUO, AB és XYZ. Ha használni szeretné ezt a kódot, másolja ki, és módosítsa ezeket a karakterláncokat a projektnek megfelelően.

Összefüggő: Hogyan lehet egy karakterlánc karakterét átalakítani az ellentétes esetre programozással

C ++ program egy karakterlánc összes engedélyezésének nyomtatására

Az alábbiakban a C ++ program látható a karakterlánc összes permutációjának kinyomtatásához:

// C ++ program az összes nyomtatásához
// karakterlánc permutációi
#befoglalni
névtér használata std;
// Funkció karakterlánc permutációinak nyomtatására
void findPermutations (karakterlánc, int leftIndex, int rightIndex)
{
ha (leftIndex == rightIndex)
{
cout << str << endl;
}
más
{
for (int i = leftIndex; i <= jobbindex; én ++)
{
csere (str [leftIndex], str [i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
csere (str [leftIndex], str [i]);
}
}
}
// Illesztőprogram -kód
int main ()
{
string str1 = "MUO";
int size1 = str1.size ();
cout << "str1:" << str1 << endl;
cout << "Permutációk a" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
string str2 = "AB";
int méret2 = str2.méret ();
cout << "str2:" << str2 << endl;
cout << "Permutációk a" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
string str3 = "XYZ";
int size3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Permutációk a" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
visszatérés 0;
}

Kimenet:

str1: MUO
A MUO engedélyei:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Az AB engedélyei:
AB
BA
str3: XYZ
Az XYZ engedélyei:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Összefüggő: Hogyan lehet ellenőrizni, hogy egy karakterlánc szimmetrikus -e a programozással

Python program a karakterlánc összes engedélyezésének nyomtatására

Ezután a Python kód a karakterlánc összes permutációjának kinyomtatásához:

# Python program az összes nyomtatására
# karakterlánc permutációja
def convertToString (lista):
return '' .join (List)
# Funkció a karakterlánc permutációinak nyomtatására
def findPermutations (s, leftIndex, rightIndex):
ha leftIndex == rightIndex:
nyomtatás (convertToString (s))
más:
az i tartományban (leftIndex, rightIndex+1):
s [leftIndex], s [i] = s [i], s [leftIndex]
findPermutations (s, leftIndex+1, rightIndex)
# visszalépés
s [leftIndex], s [i] = s [i], s [leftIndex]
# Illesztőprogram -kód
str1 = "MUO"
méret1 = len (str1)
s1 = lista (str1)
nyomtatás ("str1:", str1)
print ("Permutációk", str1, ":")
findPermutations (s1, 0, size1-1)
str2 = "AB"
méret2 = len (str2)
s2 = lista (str2)
nyomtatás ("str2:", str2)
print ("Permutációk", str2, ":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
méret3 = len (str3)
s3 = lista (str3)
nyomtatás ("str3:", str3)
print ("Permutációk", str3, ":")
findPermutations (s3, 0, size3-1)

Kimenet:

str1: MUO
A MUO engedélyei:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Az AB engedélyei:
AB
BA
str3: XYZ
Az XYZ engedélyei:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Összefüggő: Hogyan lehet ellenőrizni, hogy két karakterlánc egymás diagramja -e

JavaScript program a karakterlánc összes engedélyezésének nyomtatására

Így nyomtathat permutációkat JavaScriptben:

// JavaScript program az összes nyomtatásához
// karakterlánc permutációi
// A karakterlánc karaktereinek cseréjére szolgáló funkció
függvénycsere (str, leftIndex, i) {
hagyja a hőmérsékletet;
legyen tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = hőmérséklet;
return (tempArray) .join ("");
}
// Funkció karakterlánc permutációinak nyomtatására
function findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.write (str + "
");
} más {
for (legyen i = leftIndex; i <= jobbindex; én ++) {
str = csere (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = csere (str, leftIndex, i) ;;
}
}
}
// Illesztőprogram -kód
var str1 = "MUO";
var size1 = str1.length;
document.write ("str1:" + str1 + "
");
document.write ("Permutációk" + str1 + ":" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB";
var size2 = str2.length;
document.write ("str2:" + str2 + "
");
document.write ("Permutációk" + str2 + ":" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ";
var size3 = str3.length;
document.write ("str3:" + str3 + "
");
document.write ("Permutációk a" + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);

Kimenet:

str1: MUO
A MUO engedélyei:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Az AB engedélyei:
AB
BA
str3: XYZ
Az XYZ engedélyei:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Összefüggő: A FizzBuzz kihívás teljesítése 5 programozási nyelven

C Program a karakterlánc összes engedélyezésének nyomtatásához

Az alábbiakban egy C program található, amely kinyomtatja a karakterlánc összes permutációját:

// C program az összes nyomtatásához
// karakterlánc permutációi
#befoglalni
#befoglalni
// A karakterlánc karaktereinek cseréjére szolgáló funkció
void swap (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = hőmérséklet;
}
// Funkció karakterlánc permutációinak nyomtatására
void findPermutations (char str [], int leftIndex, int rightIndex)
{
ha (leftIndex == rightIndex)
{
printf ("%s \ ⁠n", str);
}
más
{
for (int i = leftIndex; i <= jobbindex; én ++)
{
csere (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
csere (str, leftIndex, i);
}
}
}
// Illesztőprogram -kód
int main ()
{
char str1 [] = "MUO";
int méret1 = strlen (str1);
printf ("str1: %s \ ⁠n", str1);
printf (" %s engedélyezése: \ ⁠n", str1);
findPermutations (str1, 0, size1-1);
char str2 [] = "AB";
int méret2 = strlen (str2);
printf ("str2: %s \ ⁠n", str2);
printf (" %s engedélyezése: \ ⁠n", str2);
findPermutations (str2, 0, size2-1);
char str3 [] = "XYZ";
int méret3 = strlen (str3);
printf ("str3: %s \ ⁠n", str3);
printf (" %s engedélyezése: \ ⁠n", str3);
findPermutations (str3, 0, size3-1);
visszatérés 0;
}

Kimenet:

str1: MUO
A MUO engedélyei:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
Az AB engedélyei:
AB
BA
str3: XYZ
Az XYZ engedélyei:
XYZ
XZY
YXZ
YZX
ZYX
ZXY

Az engedélyek nyomtatása egyszerű

Ebben a cikkben megtanulta, hogyan kell nyomtatni a karakterlánc összes permutációját több programozási nyelven. Bár ezek a mintaprogramok nem az egyetlen módja a permutációk kezelésének, nagyszerű kezdet azok számára, akik még nem ismerik őket kódjukban.

RészvényCsipogEmail
A 11 legjobb webhely ingyenes online számítógépes programozási tanfolyamokhoz

Ezekkel az ingyenes online számítógépes programozási tanfolyamokkal nagyszerű kódolóvá válhat informatikai végzettség nélkül.

Olvassa tovább

Kapcsolódó témák
  • Programozás
  • Programozás
  • C Programozás
  • JavaScript
  • Piton
A szerzőről
Yuvraj Chandra (58 cikk megjelent)

Yuvraj egy számítástechnikai egyetemi hallgató a Delhi Egyetemen, Indiában. Szenvedélyesen foglalkozik a Full Stack webfejlesztéssel. Amikor nem ír, a különböző technológiák mélységét kutatja.

Bővebben: Yuvraj Chandra

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide