مكتشف الأنماط
جزء من قسم الأساسيات في رحلة Swift على Coddy — الدرس 85 من 86.
التحدي
سهلاقرأ سطرين من المدخلات: السطر الأول هو النص الذي سيتم البحث فيه، والسطر الثاني هو النمط المراد العثور عليه.
احسب عدد مرات ظهور النمط في النص، بما في ذلك التداخلات، واطبع العدد.
المتطلبات:
- اقرأ سلسلة النص من السطر الأول من المدخلات
- اقرأ سلسلة النمط من السطر الثاني من المدخلات
- قم بالمرور عبر النص وتحقق من وجود النمط في كل موضع
- احسب جميع حالات الظهور، بما في ذلك التطابقات المتداخلة
- اطبع العدد الإجمالي كعدد صحيح واحد
تلميح: لاستخراج سلسلة فرعية تبدأ عند الفهرس i بطول معين، يمكنك استخدام تقطيع السلسلة (string slicing) مع الفهارس. قم بتحويل السلسلة إلى مصفوفة من الأحرف أو استخدم معالجة فهرس السلسلة في Swift للتحقق مما إذا كان النمط يتطابق في كل موضع.
مثال:
إذا كانت المدخلات هي:
ababa
abaيجب أن تكون المخرجات:
2يظهر النمط "aba" عند الفهرس 0 والفهرس 2 في "ababa".
جرّب بنفسك
// قراءة المدخلات
let text = readLine()!
let pattern = readLine()!
// TODO: اكتب كودك أدناه
// عد عدد مرات ظهور النمط في النص (بما في ذلك التداخلات)
// طباعة النتيجة
print(count)جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةالإسناد المركبمراجعة - عمليات رياضية بسيطةمعاملات المقارنة7أساسيات الإدخال والإخراج
دالة الطباعةتضمين النصوصإدخال ReadLineتحويل الأنواعمراجعة - حتى 120مراجعة - True أو False10الدوال
تعريف دالةالمعاملات والوسائطقيم الإرجاعتسميات الوسائطمراجعة - دالة Sigmaمراجعة - دالة Validationالقيم الافتراضية2المتغيرات
Let مقابل Varتوصيف الأنواع (Type Annotations)الأرقامStringBooleanقواعد التسميةمراجعة - تهيئة المتغيرات5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعامل الثلاثي (Ternary Operator)8حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على المدخلات3القيم الاختيارية (Optionals)
ما هي القيم الاختياريةفك القيم باستخدام If Letاستخدام Guard Letمعامل دمج Nilمراجعة - فك القيم بأمان9حلقات التكرار
حلقة For-Inحلقة Whileحلقة Repeat-WhileBreakContinueمراجعة - المضروب (Factorial)النطاقات في حلقات التكرارالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)