C ++ أو Python أو C أو JavaScript: بغض النظر عن ما تستخدمه ، استخدم هذه الخوارزمية لتحديد السلاسل المتماثلة.
يُقال أن الخيط متماثل إذا كان نصفا الخيط متماثلين. في هذه المقالة ، ستتعلم خوارزمية لتحديد ما إذا كانت سلسلة معينة متماثلة أم لا. ستتعلم أيضًا كيفية تنفيذ هذه الخوارزمية في لغات البرمجة الأكثر شيوعًا مثل C ++ و Python و C و JavaScript.
عرض المشكلة
لقد أعطيت سلسلة. تحتاج إلى تحديد ما إذا كانت السلسلة المعطاة متماثلة أم لا.
مثال 1: دع str = "abab".
المعطى متماثل لأن كلا نصفي الخيط متماثلان.
وبالتالي ، يكون الناتج "نعم ، السلسلة المحددة متماثلة".
مثال 2: دع str = "سيدتي".
إذا كان طول السلسلة فرديًا ، فسيتم تجاهل الحرف الأوسط من السلسلة. لذلك ، النصف الأول = "أماه" والنصف الثاني = "أنا". النصفان ليسا متماثلين.
وبالتالي ، يكون الناتج "لا ، السلسلة المحددة غير متماثلة".
مثال 3: دع str = "madma".
النصف الأول = "أماه" والنصف الثاني = "أماه". كلا نصفي السلسلة متماثلان.
وبالتالي ، يكون الناتج "نعم ، السلسلة المحددة متماثلة".
خوارزمية لتحديد ما إذا كانت السلسلة المعطاة متماثلة أم لا
يمكنك تحديد ما إذا كانت سلسلة معينة متناظرة أم لا باتباع النهج أدناه:
- أوجد طول الخيط.
- أوجد الفهرس الأوسط للسلسلة.
- إذا كان طول السلسلة زوجيًا ، midIndex = الطول / 2.
- إذا كان طول السلسلة فرديًا ، midIndex = (الطول / 2) + 1. في هذه الحالة ، يتم تجاهل الحرف الأوسط من السلسلة للمقارنة.
- تهيئة اثنين من متغيرات المؤشر المؤشر 1 و المؤشر 2. المؤشر 1 سيخزن فهرس الحرف الأول (0) من السلسلة و المؤشر 2 سيخزن فهرس الحرف الأوسط (midIndex) من السلسلة.
- قارن الآن الأحرف المقابلة لكلا نصفي السلسلة باستخدام a في حين عقدة. قم بتشغيل في حين حلقة حتى المؤشر 1.
- قارن بين الأحرف المقابلة في الفهارس المؤشر 1 و المؤشر 2.
- إذا تم العثور على أي حرف مطابق غير متماثل ، فارجع خاطئة. وإذا لم يتم العثور على أحرف مقابلة متباينة ، فارجع حقيقية.
- تأكد أيضًا من زيادة قيمة المؤشر 1 و المؤشر 2 في كل تكرار.
برنامج C ++ لتحديد ما إذا كانت السلسلة المعينة متماثلة أم لا
يوجد أدناه برنامج C ++ لتحديد ما إذا كانت سلسلة معينة متماثلة أم لا:
// C ++ برنامج للتحقق مما إذا كانت السلسلة متناظرة أم لا
#يشمل
استخدام اسم للمحطة؛
// وظيفة للتحقق مما إذا كانت السلسلة متماثلة أم لا
منطقي متماثل (سلسلة سلسلة)
{
int midIndex؛
طول int = str.length () ؛
// إذا كان طول السلسلة زوجيًا
إذا (الطول٪ 2 == 0)
{
midIndex = الطول / 2 ؛
}
// إذا كان طول السلسلة فرديًا
آخر
{
midIndex = الطول / 2 + 1 ؛
}
المؤشر 1 = 0 ؛
مؤشر int pointer2 = midIndex ؛
بينما (المؤشر 1{
إذا (str [pointer1] == str [pointer2])
{
المؤشر 1 + = 1 ؛
المؤشر 2 + = 1 ؛
}
آخر
{
عودة كاذبة؛
}
}
العودة صحيح
}
// كود السائق
انت مين()
{
// حالة الاختبار: 1
سلسلة str1 = "abab" ؛
cout << "String 1:" << str1 << endl؛
إذا (هو متماثل (str1))
{
cout << "نعم ، السلسلة المحددة متماثلة" << endl؛
}
آخر
{
cout << "لا ، السلسلة المحددة ليست متماثلة" << endl؛
}
// حالة الاختبار: 2
سلسلة str2 = "سيدتي" ؛
cout << "String 2:" << str2 << endl؛
إذا (هو متماثل (str2))
{
cout << "نعم ، السلسلة المحددة متماثلة" << endl؛
}
آخر
{
cout << "لا ، السلسلة المحددة ليست متماثلة" << endl؛
}
// حالة الاختبار: 3
سلسلة str3 = "madma" ؛
cout << "String 3:" << str3 << endl؛
إذا (هو متماثل (str3))
{
cout << "نعم ، السلسلة المحددة متماثلة" << endl؛
}
آخر
{
cout << "لا ، السلسلة المحددة ليست متماثلة" << endl؛
}
// حالة الاختبار: 4
سلسلة str4 = "سيفيك"؛
cout << "String 4:" << str4 << endl؛
إذا (هو متماثل (str4))
{
cout << "نعم ، السلسلة المحددة متماثلة" << endl؛
}
آخر
{
cout << "لا ، السلسلة المحددة ليست متماثلة" << endl؛
}
// حالة الاختبار: 5
سلسلة str5 = "khokho" ؛
cout << "String 5:" << str5 << endl؛
إذا (هو متماثل (str5))
{
cout << "نعم ، السلسلة المحددة متماثلة" << endl؛
}
آخر
{
cout << "لا ، السلسلة المحددة ليست متماثلة" << endl؛
}
العودة 0 ؛
}
انتاج:
السلسلة 1: أباب
نعم ، السلسلة المحددة متناظرة
السلسلة 2: سيدتي
لا ، السلسلة المحددة ليست متماثلة
السلسلة 3: مادما
نعم ، السلسلة المحددة متناظرة
السلسلة 4: سيفيك
لا ، السلسلة المحددة ليست متماثلة
السلسلة 5: khokho
نعم ، السلسلة المحددة متناظرة
متعلق ب: كيفية عكس سلسلة في C ++ و Python و JavaScript
برنامج Python لتحديد ما إذا كانت السلسلة المعينة متماثلة أم لا
يوجد أدناه برنامج Python لتحديد ما إذا كانت سلسلة معينة متماثلة أم لا:
# برنامج Python للتحقق مما إذا كانت السلسلة متماثلة أم لا
# وظيفة للتحقق مما إذا كانت السلسلة متماثلة أم لا
def هو متماثل (str):
midIndex = 0
الطول = لين (str)
إذا كان الطول٪ 2 == 0:
midIndex = الطول // 2
آخر:
midIndex = الطول // 2 + 1
المؤشر 1 = 0
المؤشر 2 = الفهرس المتوسط
بينما المؤشر 1إذا (str [pointer1] == str [pointer2]):
المؤشر 1 + = 1
المؤشر 2 + = 1
آخر:
عودة كاذبة
عودة صحيح
# حالة الاختبار: 1
str1 = "abab"
طباعة ("سلسلة 1:" ، str1)
إذا (هو متماثل (str1)):
print ("نعم ، السلسلة المحددة متماثلة")
آخر:
print ("لا ، السلسلة المحددة غير متماثلة")
# حالة الاختبار: 2
str2 = "سيدتي"
طباعة ("سلسلة 2:" ، str2)
إذا (هو متماثل (str2)):
print ("نعم ، السلسلة المحددة متماثلة")
آخر:
print ("لا ، السلسلة المحددة غير متماثلة")
# حالة الاختبار: 3
str3 = "مادما"
طباعة ("سلسلة 3:" ، str3)
إذا (هو متماثل (str3)):
print ("نعم ، السلسلة المحددة متماثلة")
آخر:
print ("لا ، السلسلة المحددة غير متماثلة")
# حالة الاختبار: 4
str4 = "سيفيك"
طباعة ("سلسلة 4:" ، str4)
إذا (هو متماثل (str4)):
print ("نعم ، السلسلة المحددة متماثلة")
آخر:
print ("لا ، السلسلة المحددة غير متماثلة")
# حالة الاختبار: 5
str5 = "خوخو"
طباعة ("String 5:"، str5)
إذا (هو متماثل (str5)):
print ("نعم ، السلسلة المحددة متماثلة")
آخر:
print ("لا ، السلسلة المحددة غير متماثلة")
انتاج:
السلسلة 1: أباب
نعم ، السلسلة المحددة متناظرة
السلسلة 2: سيدتي
لا ، السلسلة المحددة ليست متماثلة
السلسلة 3: مادما
نعم ، السلسلة المحددة متناظرة
السلسلة 4: سيفيك
لا ، السلسلة المحددة ليست متماثلة
السلسلة 5: khokho
نعم ، السلسلة المحددة متناظرة
متعلق ب: تعلم بايثون؟ إليك كيفية التعامل مع السلاسل
برنامج JavaScript لتحديد ما إذا كانت السلسلة المعينة متماثلة أم لا
يوجد أدناه برنامج JavaScript لتحديد ما إذا كانت سلسلة معينة متماثلة أم لا:
// برنامج JavaScript للتحقق مما إذا كانت السلسلة متماثلة أم لا
// وظيفة للتحقق مما إذا كانت السلسلة متماثلة أم لا
الوظيفة متماثلة (str) {
فار ميد إندكس
فار طول = طول طول ؛
// إذا كان طول السلسلة زوجيًا
إذا (الطول٪ 2 == 0) {
midIndex = Math.floor (الطول / 2) ؛
}
// إذا كان طول السلسلة فرديًا
آخر {
midIndex = Math.floor (طول / 2) + 1 ؛
}
var pointer1 = 0 ؛
var pointer2 = midIndex ؛
بينما (المؤشر 1إذا (str [pointer1] == str [pointer2]) {
المؤشر 1 + = 1 ؛
المؤشر 2 + = 1 ؛
} آخر {
عودة كاذبة؛
}
}
العودة صحيح
}
// حالة الاختبار: 1
var str1 = "abab" ؛
document.write ("السلسلة 1:" + str1 + "
");
إذا (هو متماثل (str1)) {
document.write ("نعم ، السلسلة المحددة متماثلة" + "
");
} آخر {
document.write ("لا ، السلسلة المحددة ليست متماثلة" + "
");
}
// حالة الاختبار: 2
var str2 = "سيدتي" ؛
document.write ("السلسلة 2:" + str2 + "
");
إذا (هو متماثل (str2)) {
document.write ("نعم ، السلسلة المحددة متماثلة" + "
");
} آخر {
document.write ("لا ، السلسلة المحددة ليست متماثلة" + "
");
}
// حالة الاختبار: 3
var str3 = "madma" ؛
document.write ("String 3:" + str3 + "
");
إذا (هو متماثل (str3)) {
document.write ("نعم ، السلسلة المحددة متماثلة" + "
");
} آخر {
document.write ("لا ، السلسلة المحددة ليست متماثلة" + "
");
}
// حالة الاختبار: 4
var str4 = "سيفيك" ؛
document.write ("String 4:" + str4 + "
");
إذا (هو متماثل (str4)) {
document.write ("نعم ، السلسلة المحددة متماثلة" + "
");
} آخر {
document.write ("لا ، السلسلة المحددة ليست متماثلة" + "
");
}
// حالة الاختبار: 5
var str5 = "khokho" ؛
document.write ("String 5:" + str5 + "
");
إذا (هو متماثل (str5)) {
document.write ("نعم ، السلسلة المحددة متماثلة" + "
");
} آخر {
document.write ("لا ، السلسلة المحددة ليست متماثلة" + "
");
}
انتاج:
السلسلة 1: أباب
نعم ، السلسلة المحددة متناظرة
السلسلة 2: سيدتي
لا ، السلسلة المحددة ليست متماثلة
السلسلة 3: مادما
نعم ، السلسلة المحددة متناظرة
السلسلة 4: سيفيك
لا ، السلسلة المحددة ليست متماثلة
السلسلة 5: khokho
نعم ، السلسلة المحددة متناظرة
متعلق ب: كيفية البحث عن الحرف الأكثر تكرارا في سلسلة
حل المشكلات بناءً على السلاسل
تعتبر السلاسل من أهم الموضوعات الخاصة ببرمجة المقابلات. يجب أن تحل بعض مشكلات البرمجة الشهيرة بناءً على سلاسل مثل التحقق مما إذا كانت السلسلة متطابقة أم لا ، تحقق إذا كانت السلاسل عبارة عن الجناس الناقصة لبعضها البعض ، فابحث عن الحرف الأكثر تكرارا في سلسلة ، وعكس السلسلة ، إلخ. إذا كنت تريد أن تكون مستعدًا تمامًا.
هل خيطك متناظر؟ سواء كنت تستخدم Python أو C ++ أو JavaScript ، استخدم إحدى هذه الخوارزميات لمعرفة ذلك.
اقرأ التالي
- برمجة
- جافا سكريبت
- بايثون
- دروس الترميز
- البرمجة C

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