Menu
CoddyTech

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.
challenge icon

سؤال إضافي

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

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

اختبار #1

اختبار #2

اختبار #3

الوسائط

haystack = "bananarama"
needle = "ana"

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

1