Menu
CoddyTech

Design Add and Search Words Data Structure

Erstelle ein Wörterbuch mit zwei Operationen. addWord w speichert das Wort w. search p gibt an, ob ein gespeichertes Wort zum Muster p passt: gleiche Länge, und an jeder Position steht im Muster derselbe Buchstabe oder ein Punkt ., der für einen beliebigen einzelnen Buchstaben steht.

Die Operation i ist ops[i] für das Wort oder Muster words[i]. Führe sie der Reihe nach mit einem leeren Wörterbuch aus und gib jeweils einen String zurück: "null" für ein addWord, "true" oder "false" für eine search.

Funktion

wordDictionaryOps(ops: string-array, words: string-array) → string-array
opsstring-array
die Operationen in der Reihenfolge, in der sie ausgeführt werden
wordsstring-array
das Wort, das hinzugefügt werden soll, oder das Muster, nach dem gesucht werden soll, jeweils eines pro Vorgang
Gibt zurückstring-array
eine Antwort pro Operation, als Text

Einschränkungen

  • 1 ≤ ops.length ≤ 2500
  • words.length == ops.length
  • Jedes ops[i] ist addWord oder search.
  • 1 ≤ words[i].length ≤ 20
  • Ein hinzuzufügendes Wort enthält nur englische Kleinbuchstaben.
  • Ein Suchmuster enthält englische Kleinbuchstaben und höchstens 3 Punkte.

Beispiele

Eingabe
ops = ["addWord", "addWord", "search", "search", "search", "search"]words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]
Ausgabe
["null", "null", "true", "false", "false", "true"]
Erklärung
r.se passt auf beide Wörter: Der Punkt steht für das o in rose und das i in rise. Ein Punkt steht niemals für einen fehlenden Buchstaben, daher passen ros und rose. nicht. ..s. passt, da bei beiden Wörtern das s an dritter Stelle steht.
challenge icon

Weiterführende Frage

Wie würdest du search erweitern, wenn ein Muster auch * enthalten könnte, das für eine beliebige Folge von Buchstaben steht, auch für eine leere?

Code zurücksetzen
def wordDictionaryOps(ops, words):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

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