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

Implement Trie (Prefix Tree)

تخزّن شجرة البادئات، أو شجرة البادئة، الكلمات بحيث تكون الاستفسارات عن بداياتها سريعة. أنشئ واحدة للكلمات ذات الأحرف الصغيرة بثلاث عمليات: تضيف insert w الكلمة w، وتُخبرك search w ما إذا كانت w نفسها قد أُضيفت، وتُخبرك startsWith p ما إذا كانت هناك كلمة مُضافة تبدأ بـ p. تُعد الكلمة بادئةً لنفسها.

تتلقى العمليات بالترتيب في ops، وwords[i] هي الكلمة أو البادئة الخاصة بـ ops[i]. نفّذها على شجرة بادئات واحدة تبدأ فارغة، وأعِد سلسلة واحدة لكل عملية: "null" للإضافة، و"true" أو "false" للبحث أو startsWith.

الدالة

trieOps(ops: string-array, words: string-array) → string-array
opsstring-array
العمليات، بالترتيب الذي تُنفَّذ به
wordsstring-array
الكلمة أو البادئة لكل عملية
تُرجعstring-array
إجابة واحدة لكل عملية، كنص

القيود

  • 1 ≤ ops.length ≤ 2000
  • words.length == ops.length
  • كل ops[i] هي insert أو search أو startsWith.
  • 1 ≤ words[i].length ≤ 20
  • words[i] يحتوي على أحرف إنجليزية صغيرة فقط.

أمثلة

المدخلات
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
المخرجات
["null", "false", "true", "null", "true"]
الشرح
في البداية، لا تُخزَّن سوى card، لذا فإن البحث عن car يُرجع "false": فلم تُدرَج قط بوصفها كلمة. إنها بداية card، لذا يُرجع startsWith car القيمة "true". بعد إدراج car، يعثر البحث عليها.

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

challenge icon

سؤال إضافي

كيف ستضيف عملية countPrefix p تُرجع عدد الكلمات المخزّنة المميّزة التي تبدأ بـ p، مع الحفاظ على زمن تنفيذ O(L)؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

ops = ["insert", "search", "startsWith", "insert", "search"]
words = ["card", "car", "car", "car", "car"]

المتوقع

["null", "false", "true", "null", "true"]