Autor: Yuvraj Chandra
PodíltweetE-mailem

Potřebujete vytisknout permutace řetězce? Ukážeme vám, jak v několika jazycích.

Permutace je uspořádání objektů v určitém pořadí. Můžete permutovat řetězec délky n v n! způsoby.

V tomto článku se dozvíte, jak najít všechny permutace daného řetězce pomocí C ++, Python, JavaScript a C.

Jak fungují permutace?

Řekněme, že máte řetězec str s řetězcovými hodnotami „MUO“. Byli jste požádáni, abyste ukázali permutace řetězce. Takto byste postupovali:

Příklad 1: Let str = "MUO"

Permutace „MUO“ jsou:

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

Všimněte si pořadí hodnot. Zde je další příklad:

Příklad 2: Let str = "AB"

Všechny permutace „AB“ jsou:

  • „AB“
  • „BA“

Můžete také vytisknout duplicitní permutace, pokud jsou v daném řetězci opakující se znaky. (Například ABBA)

Nyní, když chápete, jak permutace fungují, pojďme se podívat na to, jak je můžete najít pomocí preferovaného programovacího jazyka.

Poznámka: Navrhli jsme následující příklady kódu pro výstup permutací pro tři řetězce: MUO, AB a XYZ. Pokud chcete použít jakýkoli z tohoto kódu, zkopírujte jej a změňte tyto řetězce tak, aby odpovídaly vašemu projektu.

instagram viewer

Příbuzný: Jak pomocí programování převést znaky řetězce na opačný případ

Program C ++ pro tisk všech permutací řetězce

Níže je uveden program C ++ pro tisk všech permutací řetězce:

// Program C ++ pro tisk všech
// permutace řetězce
#zahrnout
pomocí oboru názvů std;
// Funkce pro tisk permutací řetězce
neplatné findPermutations (řetězec str, int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
cout << str << endl;
}
jiný
{
pro (int i = leftIndex; i <= rightIndex; i ++)
{
swap (str [leftIndex], str [i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str [leftIndex], str [i]);
}
}
}
// Kód řidiče
int main ()
{
řetězec str1 = "MUO";
int velikost1 = str1.size ();
cout << "str1:" << str1 << endl;
cout << "Permutace" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
řetězec str2 = "AB";
int velikost2 = str2.size ();
cout << "str2:" << str2 << endl;
cout << "Permutace" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
řetězec str3 = "XYZ";
int velikost3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Permutace" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
návrat 0;
}

Výstup:

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

Příbuzný: Jak zkontrolovat, zda je řetězec symetrický s programováním

Program Python k tisku všech permutací řetězce

Dále je kód Pythonu pro tisk všech permutací řetězce:

# Program Python pro tisk všech
# permutace řetězce
def convertToString (Seznam):
návrat ''. připojit (Seznam)
# Funkce pro tisk permutací řetězce
def findPermutations (s, leftIndex, rightIndex):
if leftIndex == rightIndex:
tisk (convertToString (s))
jiný:
pro i v rozsahu (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]
# Kód řidiče
str1 = "MUO"
size1 = len (str1)
s1 = seznam (str1)
tisk ("str1:", str1)
tisk ("Permutace", str1, ":")
findPermutations (s1, 0, size1-1)
str2 = "AB"
size2 = len (str2)
s2 = seznam (str2)
tisk ("str2:", str2)
print ("Permutations of", str2, ":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
size3 = len (str3)
s3 = seznam (str3)
tisk ("str3:", str3)
tisk ("Permutace", str3, ":")
findPermutations (s3, 0, size3-1)

Výstup:

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

Příbuzný: Jak zkontrolovat, zda jsou dva řetězce navzájem přesmyčky

Program JavaScript pro tisk všech permutací řetězce

Zde je návod, jak tisknout permutace v JavaScriptu:

// JavaScriptový program pro tisk všech
// permutace řetězce
// Funkce pro výměnu znaků v řetězci
swap funkcí (str, leftIndex, i) {
nechat teplotu;
nech tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = temp;
return (tempArray) .join ("");
}
// Funkce pro tisk permutací řetězce
funkce findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.write (str + "
");
} else {
for (let i = leftIndex; i <= rightIndex; i ++) {
str = swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = swap (str, leftIndex, i) ;;
}
}
}
// Kód řidiče
var str1 = "MUO";
var velikost1 = str1.length;
document.write ("str1:" + str1 + "
");
document.write ("Permutace" + str1 + ":" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB";
var velikost2 = str2.délka;
document.write ("str2:" + str2 + "
");
document.write ("Permutace" + str2 + ":" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ";
var velikost3 = str3.délka;
document.write ("str3:" + str3 + "
");
document.write ("Permutace" + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);

Výstup:

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

Příbuzný: Jak dokončit výzvu FizzBuzz v 5 programovacích jazycích

C Program pro tisk všech permutací řetězce

Níže je program C, který vytiskne všechny permutace řetězce:

// Program C pro tisk všech
// permutace řetězce
#zahrnout
#zahrnout
// Funkce pro výměnu znaků v řetězci
void swap (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = teplota;
}
// Funkce pro tisk permutací řetězce
neplatné findPermutations (char str [], int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
printf ("%s \ ⁠n", str);
}
jiný
{
pro (int i = leftIndex; i <= rightIndex; i ++)
{
swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Kód řidiče
int main ()
{
char str1 [] = "MUO";
int velikost1 = strlen (str1);
printf ("str1: %s \ ⁠n", str1);
printf ("Permutace %s: \ ⁠n", str1);
findPermutations (str1, 0, size1-1);
char str2 [] = "AB";
int velikost2 = strlen (str2);
printf ("str2: %s \ ⁠n", str2);
printf ("Permutace %s: \ ⁠n", str2);
findPermutations (str2, 0, size2-1);
char str3 [] = "XYZ";
int size3 = strlen (str3);
printf ("str3: %s \ ⁠n", str3);
printf ("Permutace %s: \ ⁠n", str3);
findPermutations (str3, 0, size3-1);
návrat 0;
}

Výstup:

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

Tisk permutací je snadný

V tomto článku jste se naučili tisknout všechny permutace řetězce v několika programovacích jazycích. Přestože tyto ukázkové programy nejsou jediným způsobem, jak zvládnout permutace, jsou skvělým začátkem pro ty, kteří je v jejich kódu teprve používají.

PodíltweetE-mailem
11 nejlepších stránek pro bezplatné online kurzy počítačového programování

Pomocí těchto bezplatných online kurzů počítačového programování se můžete stát skvělým kodérem bez titulu z počítačové vědy.

Číst dále

Související témata
  • Programování
  • Programování
  • C Programování
  • JavaScript
  • Krajta
O autorovi
Yuvraj Chandra (58 článků zveřejněno)

Yuvraj je studentem informatiky na univerzitě v Dillí v Indii. Je nadšený pro webový vývoj Full Stack. Když nepíše, zkoumá hloubku různých technologií.

Více od Yuvraj Chandra

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru