Menu
CoddyTech

Design Add and Search Words Data Structure

أنشئ قاموسًا للكلمات يتضمن عمليتين. تخزّن addWord w الكلمة w. تحدد search p ما إذا كانت هناك كلمة مخزّنة تطابق النمط p: بالطول نفسه، وفي كل موضع يحتوي النمط على الحرف نفسه أو نقطة .، التي ترمز إلى أي حرف واحد.

العملية i هي ops[i] على الكلمة أو النمط words[i]. نفّذ العمليات بالترتيب على قاموس فارغ، وأعِد سلسلة واحدة لكل عملية: "null" لعملية addWord، و"true" أو "false" لعملية search.

الدالة

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

القيود

  • 1 ≤ ops.length ≤ 2500
  • words.length == ops.length
  • كل عنصر من ops[i] هو إما addWord أو search.
  • 1 ≤ words[i].length ≤ 20
  • الكلمة المراد إضافتها تحتوي فقط على أحرف إنجليزية صغيرة.
  • يحتوي النمط المراد البحث عنه على أحرف إنجليزية صغيرة، وبحد أقصى 3 نقاط.

أمثلة

المدخلات
ops = ["addWord", "addWord", "search", "search", "search", "search"]words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]
المخرجات
["null", "null", "true", "false", "false", "true"]
الشرح
يطابق r.se كلتا الكلمتين: فالنقطة تحل محل الحرف o في rose والحرف i في rise. لا تحلّ النقطة أبدًا محل حرف مفقود، لذا يفشل كلٌّ من ros وrose.. يطابق ..s. الكلمتين، لأن الحرف s يأتي ثالثًا في كلتيهما.
challenge icon

سؤال إضافي

كيف ستوسّع search إذا كان من الممكن أن يحتوي النمط أيضًا على *، للدلالة على أي سلسلة من الأحرف، بما في ذلك سلسلة فارغة؟

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

اختبار #1

اختبار #2

اختبار #3

الوسائط

ops = ["addWord", "addWord", "search", "search", "search", "search"]
words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]

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

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