كاشف نمط السلسلة الفرعية المتكررة
اعرف ما إذا كانت السلسلة مجرد جزء واحد كُتب مرارًا: ababab هي ab ثلاث مرات، وaaaa هي a أربع مرات، أما aba فلا تتكرر. تحصل على أصغر وحدة وعدد التكرار بدقة. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- ababab
- وحدة الطول
- 2
- الكمية
- 3
- الطول
- 6
تطرح كثير من مسائل المقابلات وفحوصات تنظيف البيانات سؤالًا بسيطًا: هل هذه السلسلة مجرد جزء أقصر كُتب مرارًا؟ السلاسل مثل ababab وaaaa وxyzxyzxyz تُبنى كذلك؛ أما abc وaba فلا. يقبل كاشف نمط السلسلة الفرعية المتكررة هذا حقل نص واحد غير فارغ، ويُجري تحليلًا حتميًا لحد KMP (أطول بادئة-لاحقة ذاتية)، ويعيد أصغر وحدة تكرارية مع العدد الدقيق للتكرار. لا يوجد استدعاء شبكة ولا عشوائية ولا اعتماد على الساعة—فقط حساب سلاسل يمكنكم إعادة تشغيله بايتًا بايت.
ما نمط السلسلة الفرعية المتكررة وكيف تُختار الوحدة
تمتلك السلسلة نمط سلسلة فرعية متكررة عندما تساوي وحدة غير فارغة كُتبت من طرف إلى طرف مرتين على الأقل دون أحرف متبقية. على سبيل المثال ababab هي الوحدة ab مكتوبة ثلاث مرات، وaaaa هي الوحدة a أربع مرات، وxyzxyz هي الوحدة xyz مرتين. يعيد الكاشف دائمًا أصغر وحدة من هذا النوع: إذا أمكن تبليط سلسلة بكل من ab وabab، فالجواب هو ab بعدد أكبر، لا المرشح الأطول.
عندما لا تبلط أي وحدة أقصر الطول الكامل، تُبلَّغ السلسلة بأنها غير متكررة: unit يساوي النص الأصلي وcount يساوي واحدًا. يبني الاختبار الكلاسيكي ذو الزمن الخطي جدول KMP لأطول بادئة-لاحقة ذاتية لسلسلة طولها n، ويضع period مساويًا لـ n ناقص طول الحد النهائي، ويتحقق مما إذا كان period يقسم n وكان أصغر من n بصرامة. إذا تحقق الشرطان، فالوحدة هي البادئة ذات الطول period والعدد هو n مقسومًا على period.
يطابق ذلك مسح المقسومات بالقوة الغاشمة الذي يجرب كل طول من واحد حتى أرضية n على اثنين، لكنه يبقى O(n) ولا يعتمد أبدًا على ساعات عائمة أو بذور عشوائية. تُعالَج سلاسل الحرف الواحد ونتائج التحقق الفارغة صراحة: الطول واحد لا يمكن أن يكون تكرارًا غير تافه، ويُرفض النص الفارغ أو المفقود قبل أي عمل LPS.
أين يثبت كاشف النمط المتكرر جدواه
تستخدم تحضيرات المقابلات ودورات الخوارزميات هذه المسألة لتعليم الحدود والدورات وحجج المقسومات؛ يتيح كاشف حي للطلاب التحقق من ababab مقابل aba دون بناء جداول LPS يدويًا تحت ضغط الوقت. يحتاج المعلمون ومؤلفو LMS إلى عرافة حتمية تعيد علامة النمط المنطقية والوحدة الملموسة معًا، حتى تقبل المصححات الآلية أي شرح صحيح يسمي أصغر جزء نفسه. تُعلِّم خطوط جودة البيانات الأعمدة التي تبدو تكرارات لصق عرضية (SKU SKU SKU، yesyesyes) قبل أن تلوث فهارس البحث أو التحليلات.
توضح عروض الضغط والترميز بنية بأسلوب طول التشغيل دون الادعاء بأنها ضاغط كامل: إظهار أن xyzxyzxyz ثلاث نسخ من xyz يكفي غالبًا لشريحة محاضرة. تستفيد مواقع المحتوى التي تترتب على نمط السلسلة الفرعية المتكررة أو أصغر وحدة تكرارية من عنصر واجهة مجاني يطابق مساره في المتصفح مسار الأتمتة المدفوع بايتًا بايت على الوحدة النقية نفسها. لا يستهلك فشل التحقق الرصيد.
أبقوا الطلبات صغيرة، وثبّتوا unit وcount في الاختبارات، فتحصلون على إجابات قابلة لإعادة الإنتاج للواجبات وتركيبات CI وعمال الحافة دون إقامة مكدس عام لجبر السلاسل بأنفسكم.
حالات الاستخدام
تدريب المقابلات والخوارزميات
تحققوا مما إذا كانت السلسلة نمطًا متكررًا غير تافه وسمّوا أصغر وحدة والعدد مقابل حلول الكتاب المدرسي بـ KMP والمقسومات.
جودة البيانات وفحص اللصق المكرر
علّموا الخلايا أو الرموز التي هي تكرارات خالصة لجزء أقصر قبل دخولها الفهارس أو الكتالوجات أو التحليلات.
الأسئلة الشائعة
كيف أكتشف نمط سلسلة فرعية متكررة؟
أرسلوا سلسلة غير فارغة في الحقل text. عندما لا تكون السلسلة تكرارًا غير تافه، تكون unit السلسلة الكاملة وcount يساوي 1.
ما أصغر وحدة تكرارية؟
هي أقصر بادئة غير فارغة تبلط السلسلة كاملة دون باقٍ. لـ ababab الوحدة هي ab (وليس abab). لـ aaaa الوحدة هي a.
أي خوارزمية يستخدمها الكاشف؟
اختبار دور KMP لأطول بادئة-لاحقة ذاتية (LPS): إذا كان period = n - lps[n-1] يقسم n وكان أقصر من n، فالوحدة هي البادئة بذلك الطول. يعادل تجربة كل طول مقسوم، لكن بزمن خطي.
ماذا أحصل عليه إذا لم تكن السلسلة متكررة؟
تحصل على نتيجة عادية لا على خطأ: تشير النتيجة إلى عدم وجود تكرار، وتكون الوحدة هي السلسلة كاملة والعدد واحدًا. وتُعامل السلاسل العادية مثل abc بالطريقة نفسها.
هل يجب أن تغطي الوحدة السلسلة كلها؟
نعم. لا تُعد السلسلة متكررة إلا إذا غطتها الوحدة، مكتوبة مرتين متتاليتين على الأقل، دون أن يبقى أي حرف زائد. لهذا لا تُعد aba تكرارًا، مع أنها تبدأ وتنتهي بالحرف a.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/repeated-substring \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"ababab"}'const res = await fetch("https://api.kit.forhosting.com/dev/repeated-substring", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "ababab"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/repeated-substring",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "ababab"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/repeated-substring", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"ababab"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"ababab"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/repeated-substring", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "ababab"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.repeated_substring",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
عندما لا تبلط أي وحدة أقصر السلسلة كاملة، تضع الاستجابة is_repeated على false، وunit على النص الكامل، وcount على واحد، حتى يحصل المستدعي دائمًا على عقد مستقر.
ما نمط السلسلة الفرعية المتكررة وكيف تُختار الوحدة
هذا العقد ألطف لخطوط الأنابيب من خطأ قاسٍ على غير الأنماط، لأن المستدعي يمكنه التفرع على is_repeated دون معاملة السلاسل الفريدة العادية كإدخال غير صالح.
عقد الإدخال وحقول الاستجابة وسلوك الأخطاء
مثال: aaaa ينتج unit a وcount أربعة. أبقوا المدخلات تحت سقف الأحرف الموثَّق؛ تفشل اللصقات المفرطة برسالة حد صريحة بدل قطع صامت مبتور. أرسلوا جسم JSON عبر POST يتضمن حقل text إلزاميًا يحمل سلسلة غير فارغة. تُقبل الأسماء البديلة input وstring وvalue وs وsource حتى تعيد نماذج الاستعلام وجداول البيانات وأغلفة SDK المكتوبة استخدام العقد نفسه دون إعادة تسمية الأعمدة. تُحوَّل الأعداد المنتهية وbigint أولًا إلى سلسلة، فيُحلَّل رمز منتج كُتب كعدد خام بنظافة؛ وتُرفض القيم المنطقية والكائنات البسيطة والمصفوفات حتى لا يصبح جسم JSON خاطئ كلمة true أو تفريغ كائن عديم الفائدة. تفشل السلاسل الفارغة وtext المفقود بـ invalid_input ولا تُفوتر. عند النجاح يتضمن الجسم text (صدى السلسلة المحلَّلة)، وis_repeated (true عندما يكون count اثنين على الأقل)، وunit (أصغر جزء تكراري، أو السلسلة الكاملة عند عدم التكرار)، وunit_length، وcount، وlength للنص الأصلي، وmethod ثابتًا على kmp_period للسجلات وخطوط الأنابيب متعددة الأدوات. مثال: ababab ينتج unit ab وunit_length اثنين وcount ثلاثة وis_repeated true. مثال: abc ينتج unit abc وcount واحدًا وis_repeated false. اقرنوا التشغيل المجاني في المتصفح على هذه الصفحة بـ API المدفوع عندما تحتاجون الوحدة والعدد نفسيهما داخل CI أو سكربتات التصحيح أو عمال الحافة دون إعادة تنفيذ KMP بأنفسكم.
أين يثبت كاشف النمط المتكرر جدواه
ولأن التنفيذ parse نقي من المستوى A، يكلف كل استدعاء ناجح السعر الأساسي المنشور $0.002 بلا رموز نموذج وبلا شبكة صادرة.
حالات التكامل
التصحيح الآلي لـ LMS والواجبات
قيّموا بنود السلسلة الفرعية المتكررة بعرافة حتمية تعيد unit وcount وis_repeated لمقارنة مستقرة.
أسئلة تقنية
ماذا لو لم تكن السلسلة متكررة؟
ينجح الاستدعاء مع ذلك: is_repeated هو false، وunit يساوي النص الأصلي، وcount يساوي 1. فقط text المفقود أو الفارغ هو invalid_input.
كم يكلف كاشف نمط السلسلة الفرعية المتكررة؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بمقدار $0.002 لكل استدعاء ناجح؛ لا تُفوتر المدخلات غير الصالحة.