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"]