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

Mor*_*eng 14 arrays sorting string algorithm search

输入:

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

2)前缀字符串P;

输出:

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

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

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

小智 19

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

  • 蜘蛛:这是不正确的。即使在最佳情况下(存在匹配项),二进制搜索也为O(n + log m),因为它必须读取整个前缀以检查其是否匹配。最坏的情况是O(nlogm)。 (2认同)