需要澄清 KMP 算法的最佳时间复杂度和最差时间复杂度。令我困惑的是 O(n) 的最差搜索时间复杂度。网上看了下才明白是有两个索引。一个索引 i 用于文本,另一个索引 j 用于模式。而且我们不会减少文本索引 i。但是当存在不匹配且 j 值大于 0 时,我们会减少模式索引 j。在这种情况下,i 保持不变。那么最坏的时间复杂度怎么可能是 O(n) 呢?它应该比 O(mn) 更多。对于 i 的特定值,我们可以对 j 进行多次迭代。
还有什么是最好的情况?它与最坏的情况不同吗?我正在寻找简单的解释,因为我已经阅读了不同的教程。