Menu
CoddyTech

Palindrome Partitioning

تُقرأ المتناظرة بالطريقة نفسها من اليسار إلى اليمين ومن اليمين إلى اليسار. قسّم السلسلة s إلى قطعة واحدة أو أكثر بحيث تكون كل قطعة متناظرة، وأعِد كل الطرق الممكنة لذلك.

اكتب كل تقسيم على هيئة قطعه بالترتيب، مع الفصل بينها باستخدام |: تقسيم aab إلى a وa وb يعطي a|a|b. أعِد التقسيمات مرتبة تصاعديًا حسب رموز الأحرف، بحيث يأتي | بعد كل حرف صغير.

الدالة

partition(s: string) → string-array
sstring
سلسلة الأحرف الصغيرة المراد تقسيمها
تُرجعstring-array
كل تقسيم للسلسلة s إلى سلاسل متناظرة، مع كتابة | بين الأجزاء، بترتيب تصاعدي

القيود

  • 1 ≤ s.length ≤ 11
  • s يحتوي على أحرف إنجليزية صغيرة فقط.
  • سلسلة مكوّنة من 11 حرفًا متطابقًا لها 1,024 تقسيمًا، وهي أكبر إجابة.

أمثلة

المدخلات
s = "aab"
المخرجات
["aa|b", "a|a|b"]
الشرح
فقط aa|b وa|a|b تتكوّنان بالكامل من مقاطع متناظرة؛ أما a|ab فيفشل بسبب ab. يأتي aa|b أولًا في الترتيب: عند الحرف الثاني لديه a، بينما لدى الآخر |، الذي يأتي بعد كل حرف في الترتيب.
challenge icon

سؤال إضافي

هل يمكنك إيجاد أقل عدد من القطوع اللازمة لتقسيم s إلى متلازمات، للسلاسل التي يصل طولها إلى 2,000؟

إعادة ضبط الشيفرة
def partition(s):
    # اكتب الكود هنا

اختبار #1

اختبار #2

وسيط

s = "aab"

الإخراج المتوقع

["aa|b", "a|a|b"]