بقلم يوفراج شاندرا
يشاركسقسقةبريد الالكتروني

تحتاج إلى طباعة التباديل لسلسلة؟ سنوضح لك كيفية القيام بذلك بعدة لغات.

التقليب هو ترتيب الكائنات بترتيب معين. يمكنك تبديل سلسلة طولها n في n! طرق.

في هذه المقالة ، ستتعلم كيفية العثور على جميع التباديل لسلسلة معينة باستخدام C ++ و Python و JavaScript و C.

كيف تعمل التباديل؟

لنفترض أن لديك سلسلة شارع مع "MUO" كقيم سلسلة. لقد طُلب منك إظهار تباديل السلسلة. إليك كيفية القيام بذلك:

مثال 1: دع str = "MUO"

تباديل "MUO" هي:

  • "MUO"
  • "مذكرة تفاهم"
  • "UMO"
  • "UOM"
  • "أم"
  • "OMU"

لاحظ ترتيب القيم. إليك مثال آخر:

مثال 2: دع str = "AB"

جميع تباديل "AB" هي:

  • "AB"
  • "بكالوريوس"

يمكنك أيضًا طباعة التباديل المكرر إذا كان هناك أحرف متكررة في السلسلة المحددة. (ABBA ، على سبيل المثال)

الآن بعد أن فهمت كيفية عمل التباديل ، دعنا نلقي نظرة على كيفية العثور عليها باستخدام لغة البرمجة المفضلة لديك.

ملحوظة: لقد قمنا بتصميم أمثلة التعليمات البرمجية التالية لإخراج التباديل لثلاث سلاسل: MUO و AB و XYZ. إذا كنت ترغب في استخدام أي من هذه التعليمات البرمجية ، فقم بنسخها وتغيير هذه السلاسل لتناسب مشروعك.

instagram viewer

متعلق ب: كيفية تحويل أحرف سلسلة إلى الحالة المعاكسة بالبرمجة

برنامج C ++ لطباعة جميع التباديل لسلسلة

يوجد أدناه برنامج C ++ لطباعة جميع التباديل لسلسلة:

// C ++ برنامج لطباعة جميع ملفات
// تباديل سلسلة
#يشمل
استخدام اسم للمحطة؛
// وظيفة لطباعة التباديل للسلسلة
findPermutations باطلة (string str ، int leftIndex ، int rightIndex)
{
إذا (leftIndex == rightIndex)
{
cout << str << endl؛
}
آخر
{
لـ (int i = leftIndex ؛ أنا <= rightIndex ؛ أنا ++)
{
مبادلة (str [leftIndex] ، str [i]) ؛
findPermutations (str، leftIndex + 1، rightIndex) ؛
//backtrack
مبادلة (str [leftIndex] ، str [i]) ؛
}
}
}
// كود السائق
انت مين()
{
سلسلة str1 = "MUO" ؛
int size1 = str1.size () ؛
cout << "str1:" << str1 << endl؛
cout << "التباديل" << str1 << ":" << endl؛
findPermutations (str1، 0، size1-1) ؛
سلسلة str2 = "AB" ؛
int size2 = str2.size () ؛
cout << "str2:" << str2 << endl؛
cout << "التباديل" << str2 << ":" << endl؛
findPermutations (str2، 0، size2-1) ؛
سلسلة str3 = "XYZ" ؛
int size3 = str3.size () ؛
cout << "str3:" << str3 << endl؛
cout << "التباديل" << str3 << ":" << endl؛
findPermutations (str3، 0، size3-1) ؛
العودة 0 ؛
}

انتاج |:

str1: MUO
تباديل MUO:
MUO
مذكرة تفاهم
UMO
UOM
أوم
OMU
str2: أب
تباديل AB:
AB
بكالوريوس
str3: XYZ
تباديل XYZ:
س ص ع
XZY
YXZ
YZX
ZYX
ZXY

متعلق ب: كيفية التحقق مما إذا كانت السلسلة متناظرة مع البرمجة

برنامج Python لطباعة جميع التباديل لسلسلة

بعد ذلك ، هو رمز Python لطباعة جميع التباديل لسلسلة:

# برنامج Python لطباعة كل شيء
# تباديل سلسلة
def convertToString (قائمة):
عودة ". الانضمام (قائمة)
# وظيفة لطباعة التباديل للسلسلة
def findPermutations (s، leftIndex، rightIndex):
في حالة اليسار الفهرس == الفهرس الأيمن:
طباعة (convertToString (s))
آخر:
بالنسبة لـ i في النطاق (leftIndex ، rightIndex + 1):
s [leftIndex] ، s [i] = s [i] ، s [leftIndex]
findPermutations (s، leftIndex + 1، rightIndex)
# تراجع
s [leftIndex] ، s [i] = s [i] ، s [leftIndex]
# كود السائق
str1 = "MUO"
size1 = لين (str1)
s1 = قائمة (str1)
طباعة ("str1:"، str1)
طباعة ("تباديل" ، str1 ، ":")
findPermutations (s1، 0، size1-1)
str2 = "AB"
size2 = لين (str2)
s2 = قائمة (str2)
طباعة ("str2:"، str2)
طباعة ("تباديل" ، str2 ، ":")
findPermutations (s2، 0، size2-1)
str3 = "XYZ"
size3 = لين (str3)
s3 = قائمة (str3)
طباعة ("str3:"، str3)
طباعة ("تباديل" ، str3 ، ":")
findPermutations (s3، 0، size3-1)

انتاج |:

str1: MUO
تباديل MUO:
MUO
مذكرة تفاهم
UMO
UOM
أوم
OMU
str2: أب
تباديل AB:
AB
بكالوريوس
str3: XYZ
تباديل XYZ:
س ص ع
XZY
YXZ
YZX
ZYX
ZXY

متعلق ب: كيفية التحقق مما إذا كان هناك سلسلان يمثلان الجناس الناقصة لبعضهما البعض

برنامج JavaScript لطباعة جميع التباديل لسلسلة

إليك كيفية طباعة التباديل في JavaScript:

// برنامج JavaScript لطباعة الكل
// تباديل سلسلة
// وظيفة لمبادلة أحرف السلسلة
تبديل الوظائف (str، leftIndex، i) {
اسمحوا درجة الحرارة
دع tempArray = str.split ("") ؛
temp = tempArray [leftIndex] ؛
tempArray [leftIndex] = tempArray [i] ؛
tempArray [i] = temp ؛
return (tempArray) .join ("") ؛
}
// وظيفة لطباعة التباديل للسلسلة
دالة findPermutations (str، leftIndex، rightIndex) {
إذا (leftIndex == rightIndex) {
document.write (str + "
");
} آخر {
لـ (اسمح لي = leftIndex ؛ أنا <= rightIndex ؛ أنا ++) {
str = swap (str، leftIndex، i) ؛
findPermutations (str، leftIndex + 1، rightIndex) ؛
//backtrack
str = swap (str، leftIndex، i) ؛؛
}
}
}
// كود السائق
var str1 = "MUO" ؛
var size1 = str1.length ؛
document.write ("str1:" + str1 + "
");
document.write ("تباديل" + str1 + ":" + "
");
findPermutations (str1، 0، size1-1) ؛
var str2 = "AB" ؛
var size2 = str2.length ؛
document.write ("str2:" + str2 + "
");
document.write ("تباديل" + str2 + ":" + "
");
findPermutations (str2، 0، size2-1) ؛
var str3 = "XYZ" ؛
var size3 = str3.length ؛
document.write ("str3:" + str3 + "
");
document.write ("تباديل" + str3 + ":" + "
");
findPermutations (str3، 0، size3-1) ؛

انتاج |:

str1: MUO
تباديل MUO:
MUO
مذكرة تفاهم
UMO
UOM
أوم
OMU
str2: أب
تباديل AB:
AB
بكالوريوس
str3: XYZ
تباديل XYZ:
س ص ع
XZY
YXZ
YZX
ZYX
ZXY

متعلق ب: كيف تكمل تحدي FizzBuzz في 5 لغات برمجة

برنامج C لطباعة جميع التباديل لسلسلة

يوجد أدناه برنامج C يطبع جميع التباديل لسلسلة:

// C برنامج لطباعة الكل
// تباديل سلسلة
#يشمل
#يشمل
// وظيفة لمبادلة أحرف السلسلة
مبادلة باطلة (char str [] ، int leftIndex ، int i)
{
char temp = str [leftIndex] ؛
str [leftIndex] = str [i] ؛
str [i] = temp ؛
}
// وظيفة لطباعة التباديل للسلسلة
findPermutations باطلة (char str [] ، int leftIndex ، int rightIndex)
{
إذا (leftIndex == rightIndex)
{
printf ("٪ s \ ⁠n" ، str) ؛
}
آخر
{
لـ (int i = leftIndex ؛ أنا <= rightIndex ؛ أنا ++)
{
مبادلة (str، leftIndex، i) ؛
findPermutations (str، leftIndex + 1، rightIndex) ؛
//backtrack
مبادلة (str، leftIndex، i) ؛
}
}
}
// كود السائق
انت مين()
{
char str1 [] = "MUO" ؛
حجم int1 = strlen (str1) ؛
printf ("str1:٪ s \ ⁠n" ، str1) ؛
printf ("تبديلات٪ s: \ ⁠n" ، str1) ؛
findPermutations (str1، 0، size1-1) ؛
char str2 [] = "AB" ؛
حجم int2 = strlen (str2) ؛
printf ("str2:٪ s \ ⁠n" ، str2) ؛
printf ("تبديلات٪ s: \ ⁠n" ، str2) ؛
findPermutations (str2، 0، size2-1) ؛
char str3 [] = "XYZ" ؛
int size3 = strlen (str3) ؛
printf ("str3:٪ s \ ⁠n" ، str3) ؛
printf ("تبديلات٪ s: \ ⁠n" ، str3) ؛
findPermutations (str3، 0، size3-1) ؛
العودة 0 ؛
}

انتاج |:

str1: MUO
تباديل MUO:
MUO
مذكرة تفاهم
UMO
UOM
أوم
OMU
str2: أب
تباديل AB:
AB
بكالوريوس
str3: XYZ
تباديل XYZ:
س ص ع
XZY
YXZ
YZX
ZYX
ZXY

تبديلات الطباعة سهلة

في هذه المقالة ، تعلمت كيفية طباعة جميع التباديل لسلسلة ما في عدة لغات برمجة. على الرغم من أن نماذج البرامج هذه ليست الطريقة الوحيدة للتعامل مع التباديل ، إلا أنها بداية رائعة لأولئك الجدد في استخدامها في التعليمات البرمجية الخاصة بهم.

يشاركسقسقةبريد الالكتروني
أفضل 11 موقعًا لدورات برمجة الكمبيوتر المجانية عبر الإنترنت

باستخدام دورات برمجة الكمبيوتر المجانية عبر الإنترنت ، يمكنك أن تصبح مبرمجًا رائعًا بدون الحصول على درجة علمية في علوم الكمبيوتر.

اقرأ التالي

مواضيع ذات صلة
  • برمجة
  • برمجة
  • البرمجة C
  • جافا سكريبت
  • بايثون
نبذة عن الكاتب
يوفراج شاندرا (تم نشر 58 مقالة)

يوفراج طالب جامعي في علوم الكمبيوتر بجامعة دلهي بالهند. إنه متحمس لتطوير الويب Full Stack. عندما لا يكتب ، فإنه يستكشف عمق التقنيات المختلفة.

المزيد من Yuvraj Chandra

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك