Menu
CoddyTech
flag Ar iconالعربيةdown icon

Find the First Occurrence in a String

تحصل على سلسلتين نصيتين، haystack وneedle. أعد الفهرس في haystack الذي يبدأ عنده أول ظهور لـneedle، مع بدء العد من 0. إذا لم تظهر needle مطلقًا في haystack، فأعد -1. اكتب خوارزمية البحث بنفسك بدلًا من استدعاء دالة مضمّنة للبحث عن سلسلة فرعية، مثل find أو indexOf.

الدالة

strStr(haystack: string, needle: string) → integer
haystackstring
النص المراد البحث فيه
needlestring
السلسلة النصية التي تبحث عنها
تُرجعinteger
الفهرس الذي يبدأ عنده أول ظهور لـ needle، أو ‎-1‎ إذا لم يوجد

القيود

  • 1 ≤ haystack.length ≤ 5 × 104
  • 1 ≤ needle.length ≤ 5 × 104
  • تحتوي كلتا السلسلتين على أحرف إنجليزية صغيرة فقط.
  • needle قد تكون أطول من haystack. عندئذٍ لا يمكن أن تظهر، وتكون الإجابة -1.

أمثلة

المدخلات
haystack = "bananarama"needle = "ana"
المخرجات
1
الشرح
الأحرف عند الفهارس 1 و2 و3 تُكوّن ana. تبدأ نسخة ثانية عند الفهرس 3 وتتداخل مع النسخة الأولى، لكن الإجابة هي النسخة الأولى، لذا فهي 1.

lock icon+16 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

هل يمكنك إرجاع كل فهرس تبدأ عنده needle، بما في ذلك النسخ المتداخلة، مع الحفاظ على زمن تنفيذ O(n + m)؟

إعادة ضبط الشيفرة
def strStr(haystack, needle):
    # اكتب الكود هنا
حالات الاختبار

الحالة 1

الحالة 2

الحالة 3

المدخلات

haystack = "bananarama"
needle = "ana"

المتوقع

1