تحتاج إلى طباعة التباديل لسلسلة؟ سنوضح لك كيفية القيام بذلك بعدة لغات.
التقليب هو ترتيب الكائنات بترتيب معين. يمكنك تبديل سلسلة طولها n في n! طرق.
في هذه المقالة ، ستتعلم كيفية العثور على جميع التباديل لسلسلة معينة باستخدام C ++ و Python و JavaScript و C.
كيف تعمل التباديل؟
لنفترض أن لديك سلسلة شارع مع "MUO" كقيم سلسلة. لقد طُلب منك إظهار تباديل السلسلة. إليك كيفية القيام بذلك:
مثال 1: دع str = "MUO"
تباديل "MUO" هي:
- "MUO"
- "مذكرة تفاهم"
- "UMO"
- "UOM"
- "أم"
- "OMU"
لاحظ ترتيب القيم. إليك مثال آخر:
مثال 2: دع str = "AB"
جميع تباديل "AB" هي:
- "AB"
- "بكالوريوس"
يمكنك أيضًا طباعة التباديل المكرر إذا كان هناك أحرف متكررة في السلسلة المحددة. (ABBA ، على سبيل المثال)
الآن بعد أن فهمت كيفية عمل التباديل ، دعنا نلقي نظرة على كيفية العثور عليها باستخدام لغة البرمجة المفضلة لديك.
ملحوظة: لقد قمنا بتصميم أمثلة التعليمات البرمجية التالية لإخراج التباديل لثلاث سلاسل: MUO و AB و XYZ. إذا كنت ترغب في استخدام أي من هذه التعليمات البرمجية ، فقم بنسخها وتغيير هذه السلاسل لتناسب مشروعك.
متعلق ب: كيفية تحويل أحرف سلسلة إلى الحالة المعاكسة بالبرمجة
برنامج 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
تبديلات الطباعة سهلة
في هذه المقالة ، تعلمت كيفية طباعة جميع التباديل لسلسلة ما في عدة لغات برمجة. على الرغم من أن نماذج البرامج هذه ليست الطريقة الوحيدة للتعامل مع التباديل ، إلا أنها بداية رائعة لأولئك الجدد في استخدامها في التعليمات البرمجية الخاصة بهم.
باستخدام دورات برمجة الكمبيوتر المجانية عبر الإنترنت ، يمكنك أن تصبح مبرمجًا رائعًا بدون الحصول على درجة علمية في علوم الكمبيوتر.
اقرأ التالي
- برمجة
- برمجة
- البرمجة C
- جافا سكريبت
- بايثون
يوفراج طالب جامعي في علوم الكمبيوتر بجامعة دلهي بالهند. إنه متحمس لتطوير الويب Full Stack. عندما لا يكتب ، فإنه يستكشف عمق التقنيات المختلفة.
اشترك في نشرتنا الإخبارية
انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!
انقر هنا للاشتراك