当前位置:  开发笔记 > 编程语言 > 正文

从排序字符串数组中找到第一个前缀匹配的最有效算法?

如何解决《从排序字符串数组中找到第一个前缀匹配的最有效算法?》经验,为你挑选了1个好方法。

输入:

1)一个巨大的字符串SA排序数组;

2)前缀字符串P;

输出:

与输入前缀匹配的第一个字符串的索引(如果有).如果没有这样的匹配,则输出将为-1.

示例:SA = {"ab","abd","abdf","abz"} P ="abd"输出应为1(索引从0开始).

做这种工作的算法最简单的方法是什么?



1> 小智..:

如果你只想这样做一次,使用二进制搜索,如果另一方面你需要为许多不同的前缀,但在同一个字符串数组上,建立一个基数树可能是一个好主意,在你建立了树每一个抬头都会很快.


蜘蛛:这是不正确的。即使在最佳情况下(存在匹配项),二进制搜索也为O(n + log m),因为它必须读取整个前缀以检查其是否匹配。最坏的情况是O(nlogm)。
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有