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.
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í.
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
- Programování
- Programování
- C Programování
- JavaScript
- Krajta
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í.
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