使用什么算法来检查给定字符串是否与一组前缀匹配,以及该组中的哪个前缀?
其他变体:给定路径和一组目录,如何检查路径是否在一组目录中(假设没有符号链接,或者它们不重要)?
我对算法的描述或名称感兴趣,或者解决这个问题的 Perl 模块(或者可以用来解决这个问题)。
Edit
解决方案的奖励积分可以有效地找到'是'的前缀字符串集(目录集)之间的关系
例如,给定一组目录:foo, foo/bar, foo/baz, quux, baz/quux, baz/quux/plugh
该算法是为了找到foo
是前缀foo/bar
and foo/baz
, 然后baz/quux
是前缀baz/quux/plugh
...希望没有 O(n^2) 时间。
执行此操作的有效方法是使用 Trie:
http://en.wikipedia.org/wiki/Trie http://en.wikipedia.org/wiki/Trie
CPAN 上有一个包:
https://metacpan.org/pod/Tree::Trie https://metacpan.org/pod/Tree::Trie
(虽然我自己从未使用过该包)
您需要考虑哪些操作需要最有效。在 Trie 中进行查找非常便宜,但是如果您只为一次查找构建 trie,那么它可能不是最快的方法......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)