0Pricing
Competitive Programming Academy · درس

التحقق من التناظر الانعكاسي بالطريقة الصحيحة

المقارنة من الطرفين بكفاءة

التحقق من التناظر الانعكاسي بالطريقة الصحيحة درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

ما السلسلة المتناظرة

تُقرأ السلسلة المتناظرة بالطريقة نفسها من الأمام والخلف، مثل racecar أو level. ويُعد التحقق منها مسألة تمهيدية كلاسيكية. 🔁

حيلة الشرائح

يمكن لـ Python عكس سلسلة باستخدام الشريحة s[::-1]. قارنها بالسلسلة الأصلية لتحصل على فحص في سطر واحد.

s = 'level'
print(s == s[::-1])  # True

تستهلك الشريحة ذاكرة إضافية

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

طريقة المؤشرين

ضع مؤشرًا في البداية وآخر في النهاية. قارنهما وحرّكهِما نحو الداخل. تستخدم هذه الطريقة مساحة إضافية O(1).

i, j = 0, len(s) - 1
while i < j:
    if s[i] != s[j]:
        break
    i += 1; j -= 1

توقّف في المنتصف

لا يحتاج المؤشران إلا إلى الالتقاء في المنتصف. بمجرد أن لا يكون i أصغر من j، يكون كل زوج قد تطابق وتكون السلسلة متناظرة.

يعني عدم التطابق التوقف مبكرًا

يمكن لحلقة المؤشرين أن تعيد False فور اختلاف زوج من المحارف. ونادرًا ما تحتاج إلى مسح السلسلة كاملة، وهذا يوفر سرعة جيدة.

def is_pal(s):
    i, j = 0, len(s) - 1
    while i < j:
        if s[i] != s[j]: return False
        i += 1; j -= 1
    return True

كلاهما بزمن O(n)

تلمس كل طريقة كل محرف مرة واحدة على الأكثر، لذلك تعمل الطريقتان في زمن خطي. والاختلاف بينهما في الذاكرة الإضافية المستخدمة فقط.

طبّع أولًا

تتجاهل مسائل كثيرة حالة الأحرف والمسافات. نظّف السلسلة أولًا بتحويلها إلى أحرف صغيرة والإبقاء على الأحرف والأرقام فقط.

raw = 'A man, a plan'
clean = ''.join(c.lower() for c in raw if c.isalnum())

ثم افحص السلسلة المنظّفة

بعد التطبيع، نفّذ اختبار التناظر المعتاد على النسخة المنظّفة. وهذا هو النمط القياسي لفحص تناظر الجمل.

print(clean == clean[::-1])

تتجاوز المؤشرات الأحرف غير الأبجدية

بدلًا من التنظيف أولًا، يمكن للمؤشرين تجاوز أي محرف غير أبجدي أو رقمي في موضعه. ويجنبك ذلك إنشاء سلسلة ثانية بالكامل.

السلاسل الفرعية المتناظرة

تسأل المسائل الأصعب عن السلاسل الفرعية المتناظرة. والفكرة الأساسية هي التوسّع حول المركز: وسّع إلى الخارج من كل موضع ما دامت النهايتان متطابقتين.

تحقق سريع

سؤال واحد حول فحص السلاسل المتناظرة.

مراجعة

يمكنك فحص السلاسل المتناظرة باستخدام شريحة سريعة أو مؤشرين يستهلكان ذاكرة قليلة، وتطبيع الإدخال غير المنتظم قبل الاختبار. 🎉

الأسئلة الشائعة

هل درس «التحقق من التناظر الانعكاسي بالطريقة الصحيحة» مجاني؟

نعم — نص درس «التحقق من التناظر الانعكاسي بالطريقة الصحيحة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

ماذا ستتعلم في «التحقق من التناظر الانعكاسي بالطريقة الصحيحة»؟

المقارنة من الطرفين بكفاءة تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟

لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «التحقق من التناظر الانعكاسي بالطريقة الصحيحة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟

نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. حيل المحارف وord وchr
  2. عدّ الحروف بجدول تكرارات
  3. التحقق من التناظر الانعكاسي بالطريقة الصحيحة
  4. تقسيم الكلمات وتجريدها وإعادة وصلها
← العودة إلى Competitive Programming Academy