Haluatko tulostaa merkkijonon permutaatiot? Näytämme kuinka useilla kielillä.
Permutaatio on objektien järjestely tietyssä järjestyksessä. Voit permuuttaa n: n pituisen merkkijonon n: ssä! tapoja.
Tässä artikkelissa opit löytämään kaikki tietyn merkkijonon permutaatiot käyttämällä C ++, Python, JavaScript ja C.
Miten Permutaatiot toimivat?
Oletetaan, että sinulla on merkkijono str merkkijonoarvoina ”MUO”. Sinua on pyydetty näyttämään merkkijonon permutaatiot. Näin toimisit:
Esimerkki 1: Anna str = "MUO"
MUO: n permutaatiot ovat:
- “MUO”
- "MOU"
- “UMO”
- “UOM”
- “OUM”
- “OMU”
Huomaa arvojen järjestys. Tässä toinen esimerkki:
Esimerkki 2: Olkoon str = "AB"
Kaikki AB: n permutaatiot ovat:
- “AB”
- “BA”
Voit myös tulostaa päällekkäisiä permutaatioita, jos annetussa merkkijonossa on toistuvia merkkejä. (ABBA esim.)
Nyt kun ymmärrät, miten permutaatiot toimivat, katsotaanpa, miten voit löytää ne haluamallasi ohjelmointikielellä.
Huomautus: Olemme suunnitelleet seuraavat koodiesimerkit permutaatioiden tuottamiseksi kolmelle merkkijonolle: MUO, AB ja XYZ. Jos haluat käyttää tätä koodia, kopioi se ja muuta nämä merkkijonot projektisi mukaan.
Aiheeseen liittyviä: Kuinka muuntaa merkkijonon merkit vastakkaiseen tapaukseen ohjelmoinnin avulla
C ++ -ohjelma, joka tulostaa kaikki merkkijonon muunnokset
Alla on C ++ -ohjelma, joka tulostaa kaikki merkkijonon permutaatiot:
// C ++ -ohjelma kaikkien tulostamiseen
// merkkijonon permutaatiot
#sisältää
käyttämällä nimiavaruutta std;
// Toiminto merkkijonon permutaatioiden tulostamiseen
void findPermutations (merkkijono, int leftIndex, int rightIndex)
{
jos (leftIndex == rightIndex)
{
cout << str << endl;
}
muu
{
for (int i = leftIndex; i <= oikeaIndex; minä ++)
{
swap (str [leftIndex], str [i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
swap (str [leftIndex], str [i]);
}
}
}
// Kuljettajan koodi
int main ()
{
merkkijono str1 = "MUO";
int koko1 = str1.koko ();
cout << "str1:" << str1 << endl;
cout << "Permutaatiot" << str1 << ":" << endl;
findPermutations (str1, 0, koko1-1);
merkkijono str2 = "AB";
int koko2 = str2.koko ();
cout << "str2:" << str2 << endl;
cout << "Permutaatiot" << str2 << ":" << endl;
findPermutations (str2, 0, koko2-1);
merkkijono str3 = "XYZ";
int koko3 = str3.size ();
cout << "str3:" << str3 << endl;
cout << "Permutaatiot" << str3 << ":" << endl;
findPermutations (str3, 0, koko3-1);
palauta 0;
}
Lähtö:
str1: MUO
MUO: n luvat:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
AB: n luvat:
AB
BA
str3: XYZ
XYZ: n luvat:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Aiheeseen liittyviä: Kuinka tarkistaa, onko merkkijono symmetrinen ohjelmoinnin kanssa
Python -ohjelma tulostaa kaikki merkkijonon muunnokset
Seuraavaksi on Python -koodi, joka tulostaa kaikki merkkijonon permutaatiot:
# Python -ohjelma kaikkien tulostamiseen
# merkkijonon permutaatiot
def convertToString (lista):
paluu ''. liittyä (luettelo)
# Toiminto merkkijonon permutaatioiden tulostamiseen
def findPermutations (s, leftIndex, rightIndex):
jos leftIndex == rightIndex:
tulosta (convertToString (s))
muu:
i alueella (leftIndex, rightIndex+1):
s [leftIndex], s [i] = s [i], s [leftIndex]
findPermutations (s, leftIndex+1, rightIndex)
# paluumatka
s [leftIndex], s [i] = s [i], s [leftIndex]
# Ajokoodi
str1 = "MUO"
koko1 = len (str1)
s1 = lista (str1)
tulosta ("str1:", str1)
print ("Permutaatiot", str1, ":")
findPermutations (s1, 0, koko1-1)
str2 = "AB"
koko2 = len (str2)
s2 = lista (str2)
tulosta ("str2:", str2)
print ("Permutations of", str2, ":")
findPermutations (s2, 0, koko2-1)
str3 = "XYZ"
koko3 = len (str3)
s3 = lista (str3)
tulosta ("str3:", str3)
print ("Permutaatiot", str3, ":")
findPermutations (s3, 0, koko3-1)
Lähtö:
str1: MUO
MUO: n luvat:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
AB: n luvat:
AB
BA
str3: XYZ
XYZ: n luvat:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Aiheeseen liittyviä: Kuinka tarkistaa, ovatko kaksi merkkijonoa toistensa grammoja
JavaScript -ohjelma, joka tulostaa kaikki merkkijonon muunnokset
Voit tulostaa permutaatioita JavaScriptissä seuraavasti:
// JavaScript -ohjelma kaikkien tulostamiseen
// merkkijonon permutaatiot
// Toiminto merkkijonon merkkien vaihtamiseksi
funktionvaihto (str, leftIndex, i) {
anna lämpötilan;
anna tempArray = str.split ("");
temp = tempArray [leftIndex];
tempArray [leftIndex] = tempArray [i];
tempArray [i] = lämpötila;
return (tempArray) .join ("");
}
// Toiminto merkkijonon permutaatioiden tulostamiseen
function findPermutations (str, leftIndex, rightIndex) {
jos (leftIndex == rightIndex) {
document.write (str + "
");
} muuta {
for (olkoon i = leftIndex; i <= oikeaIndex; minä ++) {
str = vaihto (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = vaihto (str, leftIndex, i) ;;
}
}
}
// Kuljettajan koodi
var str1 = "MUO";
var koko1 = str1.pituus;
document.write ("str1:" + str1 + "
");
document.write ("Permutaatiot" + str1 + ":" + "
");
findPermutations (str1, 0, koko1-1);
var str2 = "AB";
var koko2 = str2.pituus;
document.write ("str2:" + str2 + "
");
document.write ("Permutaatiot" + str2 + ":" + "
");
findPermutations (str2, 0, koko2-1);
var str3 = "XYZ";
var koko3 = str3.pituus;
document.write ("str3:" + str3 + "
");
document.write ("Permutaatiot" + str3 + ":" + "
");
findPermutations (str3, 0, koko3-1);
Lähtö:
str1: MUO
MUO: n luvat:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
AB: n luvat:
AB
BA
str3: XYZ
XYZ: n luvat:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Aiheeseen liittyviä: Kuinka suorittaa FizzBuzz -haaste 5 ohjelmointikielellä
C Ohjelma tulostaa kaikki merkkijonon permutaatiot
Alla on C -ohjelma, joka tulostaa kaikki merkkijonon permutaatiot:
// C -ohjelma kaikkien tulostamiseen
// merkkijonon permutaatiot
#sisältää
#sisältää
// Toiminto merkkijonon merkkien vaihtamiseksi
mitätön vaihto (char str [], int leftIndex, int i)
{
char temp = str [leftIndex];
str [leftIndex] = str [i];
str [i] = lämpötila;
}
// Toiminto merkkijonon permutaatioiden tulostamiseen
void findPermutations (char str [], int leftIndex, int rightIndex)
{
jos (leftIndex == rightIndex)
{
printf ("%s \ n", str);
}
muu
{
for (int i = leftIndex; i <= oikeaIndex; minä ++)
{
vaihto (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
vaihto (str, leftIndex, i);
}
}
}
// Kuljettajan koodi
int main ()
{
char str1 [] = "MUO";
int koko1 = strlen (str1);
printf ("str1: %s \ n", str1);
printf ("Permutaatiot %s: \ n", str1);
findPermutations (str1, 0, koko1-1);
char str2 [] = "AB";
int koko2 = strlen (str2);
printf ("str2: %s \ n", str2);
printf ("Permutaatiot %s: \ n", str2);
findPermutations (str2, 0, koko2-1);
char str3 [] = "XYZ";
int koko3 = strlen (str3);
printf ("str3: %s \ n", str3);
printf ("Permutaatiot %s: \ n", str3);
findPermutations (str3, 0, koko3-1);
palauta 0;
}
Lähtö:
str1: MUO
MUO: n luvat:
MUO
MOU
UMO
UOM
OUM
OMU
str2: AB
AB: n luvat:
AB
BA
str3: XYZ
XYZ: n luvat:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Permutaatioiden tulostaminen on helppoa
Tässä artikkelissa olet oppinut tulostamaan kaikki merkkijonon permutaatiot useilla ohjelmointikielillä. Vaikka nämä näyteohjelmat eivät ole ainoa tapa käsitellä permutaatioita, ne ovat hyvä alku niille, jotka eivät ole vielä käyttäneet niitä koodissaan.
Näiden ilmaisten online -ohjelmointikurssien avulla voit tulla loistavaksi kooderiksi ilman tietotekniikan tutkintoa.
Lue seuraava
- Ohjelmointi
- Ohjelmointi
- C Ohjelmointi
- JavaScript
- Python
Yuvraj on tietojenkäsittelytieteen perusopiskelija Delhin yliopistossa Intiassa. Hän on intohimoinen Full Stack Web -kehityksestä. Kun hän ei kirjoita, hän tutkii eri tekniikoiden syvyyttä.
tilaa uutiskirjeemme
Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia e -kirjoja ja ainutlaatuisia tarjouksia!
Klikkaa tästä tilataksesi