Autor: Yuvraj Chandra
zdieľamTweetE -mail

Potrebujete vytlačiť permutácie reťazca? Ukážeme vám, ako vo viacerých jazykoch.

Permutácia je usporiadanie predmetov v určitom poradí. Môžete permutovať reťazec dĺžky n v n! spôsoby.

V tomto článku sa naučíte, ako nájsť všetky permutácie daného reťazca pomocou jazykov C ++, Python, JavaScript a C.

Ako fungujú permutácie?

Povedzme, že máte reťazec str s reťazcom „MUO“. Boli ste požiadaní o zobrazenie permutácií reťazca. Takto by ste to urobili:

Príklad 1: Let str = "MUO"

Permutácie „MUO“ sú:

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

Všimnite si poradia hodnôt. Tu je ďalší príklad:

Príklad 2: Nech str = "AB"

Všetky permutácie „AB“ sú:

  • „AB“
  • „BA“

Môžete tiež vytlačiť duplicitné permutácie, ak sa v danom reťazci nachádzajú opakujúce sa znaky. (Napríklad ABBA)

Teraz, keď chápete, ako permutácie fungujú, pozrime sa na to, ako ich môžete nájsť pomocou preferovaného programovacieho jazyka.

Poznámka

instagram viewer
: Navrhli sme nasledujúce príklady kódu na výstup permutácií pre tri reťazce: MUO, AB a XYZ. Ak chcete použiť akýkoľvek z tohto kódu, skopírujte ho a zmeňte tieto reťazce tak, aby zodpovedali vášmu projektu.

Súvisiace: Ako pomocou programovania previesť znaky reťazca na opačný prípad

Program C ++ na tlač všetkých permutácií reťazca

Nasleduje program C ++ na tlač všetkých permutácií reťazca:

// C ++ program na tlač všetkých
// permutácie reťazca
#zahrnúť
pomocou priestoru názvov std;
// Funkcia na tlač permutácií reťazca
neplatné findPermutations (reťazec str, int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
cout << str << endl;
}
inak
{
pre (int i = leftIndex; i <= rightIndex; i ++)
{
swap (str [leftIndex], str [i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str [leftIndex], str [i]);
}
}
}
// Kód vodiča
int main ()
{
reťazec str1 = "MUO";
int veľkosť1 = str1.size ();
cout << "str1:" << str1 << endl;
cout << "Permutácie" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
reťazec str2 = "AB";
int size2 = str2.size ();
cout << "str2:" << str2 << endl;
cout << "Permutácie" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
reťazec str3 = "XYZ";
int size3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Permutácie" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
návrat 0;
}

Výkon:

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

Súvisiace: Ako skontrolovať, či je reťazec symetrický s programovaním

Program Python na tlač všetkých permutácií reťazca

Ďalej je kód Pythonu na tlač všetkých permutácií reťazca:

# Program Python na vytlačenie všetkých
# permutácie reťazca
def convertToString (Zoznam):
návrat ''. pripojiť sa (zoznam)
# Funkcia na tlač permutácií reťazca
def findPermutations (s, leftIndex, rightIndex):
ak leftIndex == rightIndex:
tlač (convertToString (s))
inak:
pre 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 vodiča
str1 = "MUO"
size1 = len (str1)
s1 = zoznam (str1)
tlač ("str1:", str1)
print ("Permutations of", str1, ":")
findPermutations (s1, 0, size1-1)
str2 = "AB"
size2 = len (str2)
s2 = zoznam (str2)
tlač ("str2:", str2)
print ("Permutations of", str2, ":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
size3 = len (str3)
s3 = zoznam (str3)
tlač ("str3:", str3)
print ("Permutations of", str3, ":")
findPermutations (s3, 0, size3-1)

Výkon:

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

Súvisiace: Ako skontrolovať, či sú dve struny navzájom anagrammi

Program JavaScript na tlač všetkých permutácií reťazca

Takto vytlačíte permutácie v JavaScripte:

// JavaScriptový program na tlač všetkých
// permutácie reťazca
// Funkcia na výmenu znakov v reťazci
výmena funkcií (str, leftIndex, i) {
nechajte teplotu;
nech tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = teplota;
return (tempArray) .join ("");
}
// Funkcia na tlač permutácií reťazca
funkcia findPermutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
document.write (str + "
");
} else {
pre (nech i = leftIndex; i <= rightIndex; i ++) {
str = swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = swap (str, leftIndex, i) ;;
}
}
}
// Kód vodiča
var str1 = "MUO";
var veľkosť1 = str1.dĺžka;
document.write ("str1:" + str1 + "
");
document.write ("Permutácie" + str1 + ":" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB";
var size2 = str2.dĺžka;
document.write ("str2:" + str2 + "
");
document.write ("Permutácie" + str2 + ":" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ";
var veľkosť3 = str3.dĺžka;
document.write ("str3:" + str3 + "
");
document.write ("Permutácie" + str3 + ":" + "
");
findPermutations (str3, 0, size3-1);

Výkon:

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

Súvisiace: Ako dokončiť výzvu FizzBuzz v 5 programovacích jazykoch

C Program na tlač všetkých permutácií reťazca

Nasleduje program C, ktorý vytlačí všetky permutácie reťazca:

// C program na tlač všetkých
// permutácie reťazca
#zahrnúť
#zahrnúť
// Funkcia na výmenu znakov v reťazci
void swap (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = teplota;
}
// Funkcia na tlač permutácií reťazca
neplatné findPermutations (char str [], int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
printf ("%s \ ⁠n", str);
}
inak
{
pre (int i = leftIndex; i <= rightIndex; i ++)
{
swap (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str, leftIndex, i);
}
}
}
// Kód vodiča
int main ()
{
char str1 [] = "MUO";
int size1 = strlen (str1);
printf ("str1: %s \ ⁠n", str1);
printf ("Permutácie %s: \ ⁠n", str1);
findPermutations (str1, 0, size1-1);
char str2 [] = "AB";
int size2 = strlen (str2);
printf ("str2: %s \ ⁠n", str2);
printf ("Permutácie %s: \ ⁠n", str2);
findPermutations (str2, 0, size2-1);
char str3 [] = "XYZ";
int size3 = strlen (str3);
printf ("str3: %s \ ⁠n", str3);
printf ("Permutácie %s: \ ⁠n", str3);
findPermutations (str3, 0, size3-1);
návrat 0;
}

Výkon:

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

Tlač permutácií je jednoduchá

V tomto článku ste sa dozvedeli, ako vytlačiť všetky permutácie reťazca v niekoľkých programovacích jazykoch. Aj keď tieto ukážkové programy nie sú jediným spôsobom, ako zvládnuť permutácie, sú skvelým začiatkom pre tých, ktorí ich v kóde začínajú používať.

zdieľamTweetE -mail
11 najlepších stránok pre bezplatné online kurzy počítačového programovania

Vďaka týmto bezplatným online kurzom počítačového programovania sa môžete stať skvelým programátorom bez titulu z počítačovej vedy.

Čítajte ďalej

Súvisiace témy
  • Programovanie
  • Programovanie
  • C Programovanie
  • JavaScript
  • Python
O autorovi
Yuvraj Chandra (58 publikovaných článkov)

Yuvraj je študentom informatiky na univerzite v Dillí v Indii. Je nadšený pre vývoj webových aplikácií Full Stack. Keď nepíše, skúma hĺbku rôznych technológií.

Viac od Yuvraja Chandru

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber