Bir dizenin permütasyonlarını yazdırmanız mı gerekiyor? Size birkaç dilde nasıl yapılacağını göstereceğiz.
Permütasyon, nesnelerin belirli bir sırada düzenlenmesidir. n uzunluğundaki bir dizeyi n'de değiştirebilirsiniz! yollar.
Bu makalede, belirli bir dizenin tüm permütasyonlarını C++, Python, JavaScript ve C kullanarak nasıl bulacağınızı öğreneceksiniz.
Permütasyonlar Nasıl Çalışır?
Diyelim ki ipiniz var cadde dize değerleri olarak “MUO” ile. Dizenin permütasyonlarını göstermeniz istendi. Bunu nasıl yapacağınız aşağıda açıklanmıştır:
örnek 1: str = "MUO" olsun
“MUO” permütasyonları şunlardır:
- "MUO"
- "MUA"
- "UMO"
- "UOM"
- "OUM"
- "OMÜ"
Değerlerin sırasına dikkat edin. İşte başka bir örnek:
Örnek 2: str = "AB" olsun
“AB”nin tüm permütasyonları:
- "AB"
- "BA"
Verilen dizede yinelenen karakterler varsa, yinelenen permütasyonları da yazdırabilirsiniz. (örneğin ABBA)
Artık permütasyonların nasıl çalıştığını anladığınıza göre, tercih ettiğiniz programlama dilini kullanarak bunları nasıl bulabileceğinize bir göz atalım.
Not: MUO, AB ve XYZ olmak üzere üç dizi için permütasyon çıktısı almak üzere aşağıdaki kod örneklerini tasarladık. Bu kodlardan herhangi birini kullanmak isterseniz, kopyalayın ve bu dizeleri projenize uyacak şekilde değiştirin.
İlgili: Bir Stringin Karakterlerini Programlama ile Zıt Duruma Dönüştürme
Bir Stringin Tüm Permütasyonlarını Yazdıran C++ Programı
Aşağıda bir dizgenin tüm permütasyonlarını yazdırmak için C++ programı verilmiştir:
// hepsini yazdıracak C++ programı
// bir dizgenin permütasyonları
#Dahil etmek
ad alanı std kullanarak;
// Stringin permütasyonlarını yazdıran fonksiyon
void findPermutations (string str, int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
cout << str << endl;
}
Başka
{
for (int i = leftIndex; ben <= sağIndex; ben++)
{
takas (str[leftIndex], str[i]);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
takas (str[leftIndex], str[i]);
}
}
}
// Sürücü Kodu
int ana()
{
string str1 = "MUO";
int size1 = str1.size();
cout << "str1: " << str1 << endl;
cout << "" << str1 << ":" << endl;
findPermutations (str1, 0, size1-1);
string str2 = "AB";
int size2 = str2.size();
cout << "str2: " << str2 << endl;
cout << "" << str2 << ":" << endl;
findPermutations (str2, 0, size2-1);
string str3 = "XYZ";
int size3 = str3.size();
cout << "str3: " << str3 << endl;
cout << "" << str3 << ":" << endl;
findPermutations (str3, 0, size3-1);
0 döndür;
}
Çıktı:
str1: MUO
MUO'nun Permütasyonları:
MUO
Mutabakat Muhtırası
UMO
UOM
OUM
OMÜ
str2: AB
AB'nin permütasyonları:
AB
BA
str3: XYZ
XYZ'nin Permütasyonları:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
İlgili: Bir Dizinin Programlama İle Simetrik Olup Olmadığı Nasıl Kontrol Edilir
Bir Stringin Tüm Permütasyonlarını Yazdıran Python Programı
Ardından, bir dizenin tüm permütasyonlarını yazdıracak Python kodu:
# Tümünü yazdıracak Python programı
# bir dizgenin permütasyonu
def convertToString (Liste):
dönüş ''.join (Liste)
# Dizinin permütasyonlarını yazdırma işlevi
def findPermutations (s, leftIndex, rightIndex):
leftIndex == rightIndex ise:
print (convertToString(ler))
Başka:
aralıktaki i için (leftIndex, rightIndex+1):
s[leftIndex], s[i] = s[i], s[leftIndex]
findPermutations (s, leftIndex+1, rightIndex)
# geri dönüş
s[leftIndex], s[i] = s[i], s[leftIndex]
# Sürücü Kodu
str1 = "MUO"
size1 = uzunluk (str1)
s1 = liste (str1)
print("str1:", str1)
print("Permütasyonları", str1,":")
findPermutations (s1, 0, size1-1)
str2 = "AB"
boyut2 = uzunluk (str2)
s2 = liste (str2)
print("str2:", str2)
print("Permütasyonları", str2,":")
findPermutations (s2, 0, size2-1)
str3 = "XYZ"
boyut3 = uzunluk (str3)
s3 = liste (str3)
print("str3:",str3)
print("Permütasyonları", str3,":")
findPermutations (s3, 0, size3-1)
Çıktı:
str1: MUO
MUO'nun Permütasyonları:
MUO
Mutabakat Muhtırası
UMO
UOM
OUM
OMÜ
str2: AB
AB'nin permütasyonları:
AB
BA
str3: XYZ
XYZ'nin Permütasyonları:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
İlgili: İki Dizinin Birbirinin Anagramı Olup Olmadığı Nasıl Kontrol Edilir
Bir Dizenin Tüm Permütasyonlarını Yazdırmak için JavaScript Programı
JavaScript'te permütasyonları şu şekilde yazdırırsınız:
// Hepsini yazdıracak JavaScript programı
// bir dizgenin permütasyonları
// Dizenin karakterlerini değiştiren fonksiyon
işlev takası (str, leftIndex, i) {
sıcaklık bırakın;
izin ver tempArray = str.split("");
temp = tempArray[leftIndex] ;
tempArray[leftIndex] = tempArray[i];
tempArray[i] = temp;
dönüş (tempArray).join("");
}
// Stringin permütasyonlarını yazdıran fonksiyon
function Permutations (str, leftIndex, rightIndex) {
if (leftIndex == rightIndex) {
belge.write (str + "
");
} Başka {
for (let i = leftIndex; ben <= sağIndex; ben++) {
str = takas (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
str = takas (str, leftIndex, i);;
}
}
}
// Sürücü Kodu
var str1 = "MUO";
var size1 = str1.length;
belge.write("str1: " + str1 + "
");
document.write("" + str1 + "permütasyonları:" + "
");
findPermutations (str1, 0, size1-1);
var str2 = "AB";
var size2 = str2.length;
belge.write("str2: " + str2 + "
");
document.write("" + str2 + "'nin permütasyonları:" + "
");
findPermutations (str2, 0, size2-1);
var str3 = "XYZ";
var size3 = str3.length;
belge.write("str3: " + str3 + "
");
document.write("" + str3 + "Permütasyonları:" + "
");
findPermutations (str3, 0, size3-1);
Çıktı:
str1: MUO
MUO'nun Permütasyonları:
MUO
Mutabakat Muhtırası
UMO
UOM
OUM
OMÜ
str2: AB
AB'nin permütasyonları:
AB
BA
str3: XYZ
XYZ'nin Permütasyonları:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
İlgili: 5 Programlama Dilinde FizzBuzz Challenge Nasıl Tamamlanır?
Bir Stringin Tüm Permütasyonlarını Yazdıran C Programı
Aşağıda bir dizgenin tüm permütasyonlarını yazdıran bir C programı verilmiştir:
// Hepsini yazdıracak C programı
// bir dizgenin permütasyonları
#Dahil etmek
#Dahil etmek
// Dizenin karakterlerini değiştiren fonksiyon
geçersiz takas (char str[], int leftIndex, int i)
{
karakter sıcaklığı = str[leftIndex];
str[leftIndex] = str[i];
str[i] = sıcaklık;
}
// Stringin permütasyonlarını yazdıran fonksiyon
void findPermutations (char str[], int leftIndex, int rightIndex)
{
if (leftIndex == rightIndex)
{
printf("%s \ n", str);
}
Başka
{
for (int i = leftIndex; ben <= sağIndex; ben++)
{
takas (str, leftIndex, i);
findPermutations (str, leftIndex+1, rightIndex);
//backtrack
takas (str, leftIndex, i);
}
}
}
// Sürücü Kodu
int ana()
{
char str1[] = "MUO";
int size1 = strlen (str1);
printf("str1: %s \ n", str1);
printf("%s'nin permütasyonları: \n", str1);
findPermutations (str1, 0, size1-1);
char str2[] = "AB";
int size2 = strlen (str2);
printf("str2: %s \ n", str2);
printf("%s'nin permütasyonları: \n", str2);
findPermutations (str2, 0, size2-1);
char str3[] = "XYZ";
int size3 = strlen (str3);
printf("str3: %s \n", str3);
printf("%s'nin permütasyonları: \n", str3);
findPermutations (str3, 0, size3-1);
0 döndür;
}
Çıktı:
str1: MUO
MUO'nun Permütasyonları:
MUO
Mutabakat Muhtırası
UMO
UOM
OUM
OMÜ
str2: AB
AB'nin permütasyonları:
AB
BA
str3: XYZ
XYZ'nin Permütasyonları:
XYZ
XZY
YXZ
YZX
ZYX
ZXY
Baskı Permütasyonları Kolaydır
Bu makalede, çeşitli programlama dillerinde bir dizenin tüm permütasyonlarını nasıl yazdıracağınızı öğrendiniz. Bu örnek programlar, permütasyonları işlemenin tek yolu olmasa da, bunları kodlarında kullanmaya yeni başlayanlar için harika bir başlangıçtır.
Bu ücretsiz çevrimiçi bilgisayar programlama kurslarını kullanarak, bilgisayar bilimi diplomasına sahip olmadan harika bir kodlayıcı olabilirsiniz.
Sonrakini Oku
- Programlama
- Programlama
- C Programlama
- JavaScript
- piton
Yuvraj, Hindistan Delhi Üniversitesi'nde Bilgisayar Bilimleri lisans öğrencisidir. Full Stack Web Geliştirme konusunda tutkulu. Yazmadığı zamanlarda farklı teknolojilerin derinliğini keşfediyor.
Haber bültenimize abone ol
Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!
Abone olmak için buraya tıklayın