在小于O(n)的字符串中查找字符

时间:2016-10-20 04:42:15

标签: c++ string performance search time-complexity

是否可以在小于O(n)的字符串中搜索字符。我遇到的大多数算法需要O(n)时间。 string :: find()取O(N * M)。是否有任何算法不需要遍历整个字符串。

1 个答案:

答案 0 :(得分:2)

首先,我必须说,对于你的问题,没有比线性O(n)时间复杂度更低的算法。

当然你可以尝试拉斯维加斯的随机算法思维方式。如果幸运的话,从阵列中选择一个随机点,如果没有再次尝试并存储错误的索引,则会找到你的字符。

最糟糕的情况就像是线性搜索O(n),但是如果你在很少的第一次尝试中获得它就会非常幸运。这种算法可能正是您正在寻找的。平均而言,它会发现char可能更快但是记住它是否仍然需要k次尝试肯定k<它仍然是线性时间。 O(k)的

如果您从输入 中了解更多信息,您可以想出以不同方式解决问题的方法。

希望这有帮助