我需要设计一个数据结构,在其中可以有效地添加新单词(字符串)并搜索现有单词。另外,搜索词可以包含“。”它可以匹配任何字符。例如。如果我添加字符串“ abcd”和“ abed”,则搜索“ ab.d”应将它们都返回给我。
我尝试使用前缀Tries解决此问题。对于正常的字符串搜索(不带点),它工作正常,但对于点,我必须搜索节点的每个子节点。有没有更有效的方法来解决这个问题?
答案 0 :(得分:1)
我认为这是一个面试问题(因为我在过去的一次面试中遇到了这个问题)。还有其他一些折衷方法,但是前缀树(Trie)之外的任何方法都将过度设计以解决面试问题。只需使用所有给定的单词构建一个trie,然后在trie上搜索任何查询词。在任何时候,遇到一个点时,请从该节点搜索所有可能的子节点,然后通过匹配后面的字符继续进行进一步搜索。就是这样。