Prefix 确定一个字符串是否是另一个字符串的前缀

Prefix 确定一个字符串是否是另一个字符串的前缀,prefix,prefix-tree,patricia-trie,Prefix,Prefix Tree,Patricia Trie,我写下了一个简单的函数,确定str1是否是str2的前缀。这是一个非常简单的函数,如下所示(在JS中): 这意味着,对于每个节点,我将使用prefix match函数来确定哪个节点的值与索引处的前缀字符串相匹配。不知何故,这个解决方案似乎仍然很艰巨,对我来说也不太合适。是否有更好的方法,或者我可以改进核心前缀匹配功能 看起来你有两个不同的问题 一个是确定一个字符串是否作为前缀包含在另一个字符串中。为此,我建议使用该语言的字符串库中已经实现的函数。在JavaScript中,您可以这样做 if (s

我写下了一个简单的函数,确定str1是否是str2的前缀。这是一个非常简单的函数,如下所示(在JS中):


这意味着,对于每个节点,我将使用prefix match函数来确定哪个节点的值与索引处的前缀字符串相匹配。不知何故,这个解决方案似乎仍然很艰巨,对我来说也不太合适。是否有更好的方法,或者我可以改进核心前缀匹配功能

看起来你有两个不同的问题

一个是确定一个字符串是否作为前缀包含在另一个字符串中。为此,我建议使用该语言的字符串库中已经实现的函数。在JavaScript中,您可以这样做

if (str2.indexOf(str1) === 0) {
    // string str1 is a prefix of str2
}
请参见此处的String.indexOf文档:


对于另一个问题,在一堆字符串中,找出哪些字符串的前缀是给定的字符串,如果您想快速查找,构建一个类似于Trie或您提到的数据结构似乎是一种方法。

查看stackoverflow上的此线程-。马克·拜尔斯的解决方案似乎非常有效。对于Java,还有内置的字符串函数“endsWith”和“startsWith”-

标记为正确,因为它比我的前缀匹配解决方案要好得多,这是主要问题,而不是数据结构,还因为您需要一些要点,@Ram:)哦,是吗!?你需要一些Hadoop,非常需要!:那不是效率低下吗?如果一个字符串是另一个字符串的前缀,则必须在第一个不匹配中停止。但是,
indexOf
将尝试执行相同的检查,但对
str2
的每个字符检查一次。
         r
       /    \
     a       o
    / \     / \
ndom pid  se  m
             / \
           an   e
          /  \
        ia   ce
if (str2.indexOf(str1) === 0) {
    // string str1 is a prefix of str2
}