该算法命名为 Z 算法,因为在此算法中,我们需要创建一个 Z 数组。Z 数组的大小与文本大小相同。此数组用于存储从主字符串的当前字符开始的最长可能子字符串的长度。首先,模式和主文本与文本和模式中不存在的特殊符号连接。如果 P 是模式,T 是主文本,则连接后,它将是 P$T(假设 $ 不存在于 P 中)…… 阅读更多
坏字符启发式方法是 Boyer Moore 算法的一种方法。另一种方法是好后缀启发式。在这种方法中,我们将尝试找到一个坏字符,即主字符串中与模式不匹配的字符。当发生不匹配时,我们将移动整个模式,直到不匹配变成匹配,否则,模式将移动到坏字符之后。这里,最佳情况下的时间复杂度为 O(m/n),最坏情况下的时间复杂度为 O(mn),其中 n 是文本长度,m 是模式长度。输入和... 阅读更多