Menu
CoddyTech

Longest Common Substring

لديك سلسلتان، s1 وs2. السلسلة الفرعية هي تسلسل متصل من الأحرف مأخوذ من سلسلة، مثل ork من clockwork. أوجد أطول سلسلة فرعية مشتركة بين s1 وs2، وأعِد طولها. إذا لم يوجد أي حرف مشترك بين السلسلتين، فالإجابة هي 0.

الدالة

longestCommonSubstring(s1: string, s2: string) → integer
s1string
السلسلة النصية الأولى
s2string
السلسلة النصية الثانية
تُرجعinteger
طول أطول تسلسل من الأحرف يوجد في كلتا السلسلتين

القيود

  • 1 ≤ s1.length ≤ 1000
  • 1 ≤ s2.length ≤ 1000
  • s1 وs2 يتكونان من أحرف إنجليزية صغيرة.

أمثلة

المدخلات
s1 = "clockwork"s2 = "workshop"
المخرجات
4
الشرح
تُغلق work السلسلة clockwork وتفتح workshop، لذا فهي سلسلة فرعية مشتركة بطول 4، ولا تظهر أي كتلة أطول في كلتيهما.
challenge icon

سؤال إضافي

هل يمكنك اختبار ما إذا كانت توجد سلسلة فرعية مشتركة بطول محدد L في زمن يقارب O(n + m) باستخدام تجزئة متدحرجة، ثم إجراء بحث ثنائي على L؟

إعادة ضبط الشيفرة
def longestCommonSubstring(s1, s2):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

الوسائط

s1 = "clockwork"
s2 = "workshop"

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

4