WAP الذي يقبل سلسلتين ويعيد مؤشرات جميع تكرارات السلسلة الثانية في السلسلة الأولى كقائمة.

برمجة


أنا غير قادر على فهم هذه المشكلة…. أرجو أن تفهمني وتكتب برنامجًا لحل هذا السؤال

ما حاولت:

ليس لدي أي فكرة عن كيفية معالجة هذا السؤال.

الحل 1

ابدأ بقراءة المهمة بعناية – فقد تكون مختلفة عن “الملخص” الذي قدمته لنا.
تحتاج إلى العثور على جميع الأوقات التي تحدث فيها سلسلة داخل سلسلة أخرى. لذا، إذا كنت تبحث عن كل تكرارات “hello” في “hello Mike، hello Jane، hello Peter” فستكون هناك ثلاث مرات: “hello مايك، hello جين، hello Peter” والمؤشرات هي عدد الأحرف من بداية السلسلة التي تظهر فيها السلسلة الفرعية:

hello Mike, hello Jane, hello Peter
^           ^           ^
|           |           |
|           |            --- 24
|            --- 12
--- 0

ثم اسأل نفسك “كيف يمكنني القيام بذلك يدويًا؟”.
يمكنك البحث في السلسلة بحثًا عن الحرف “h” والتحقق مما إذا كان متبوعًا بالحرف “e” ثم “l” وهكذا. إذا كان الأمر كذلك، فقد عثرت على سلسلة فرعية، لذا قم بتدوين موضع البداية.
وفي كلتا الحالتين، ستنتقل بعد ذلك إلى الشخصية التالية وتتحقق مرة أخرى.

حدد في رأسك القواعد التي تحتاج إلى اتباعها بالضبط، وجربها يدويًا على عدة سلاسل وسلاسل فرعية مختلفة. عندما يكون لديك قواعد تغطي جميع الحالات التي يمكنك التفكير فيها (بما في ذلك السلاسل الفارغة، والمطابقات الكاملة، وعدم وجود مطابقات، وما إلى ذلك) فكر في كيفية حوسبة هذه الحالات.

إذا كنت تواجه مشكلات في البدء على الإطلاق، فقد يساعدك هذا: كيفية كتابة التعليمات البرمجية لحل مشكلة، دليل المبتدئين[^]

الحل 2

يرى الأنواع المضمنة — وثائق Python 3.10.10[^] للحصول على معلومات حول استخدام السلاسل والوصول إليها.

الحل 3

حدد find_indices(str1, str2):
المؤشرات = []

لأني في النطاق (لين (str1)):
إذا str1[i:i + len(str2)] == السلسلة 2:
المؤشرات.إلحاق (ط)
مؤشرات الإرجاع إذا كانت المؤشرات الأخرى -1

コメント

タイトルとURLをコピーしました