Menu
CoddyTech

Design Add and Search Words Data Structure

构建一个支持两种操作的单词字典。addWord w 用于存储单词 w。search p 用于判断是否存在某个已存储的单词与模式 p 匹配:长度相同,并且在每个位置,模式中的字符都与单词中的字母相同,或者是一个点 .,表示任意一个字母。

操作 i 是对单词或模式 words[i] 执行的 ops[i]。按顺序在空字典上执行这些操作,并为每个操作返回一个字符串:对于 addWord,返回 "null";对于 search,返回 "true" 或 "false"。

函数

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 可以匹配这两个单词:点号对应 rose 中的 o 和 rise 中的 i。点号不能代表缺失的字母,所以 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"]