前面介绍过,字符串搜索一般来说有三种方式,前缀搜索,后缀搜索,子串搜索.KMP使用的是前缀搜索. 假设p的偏移是i,也就是窗口的位置是i,匹配到位置j+1时发现了不匹配.现在的问题是向前移动窗口到什么位置呢?注意要保证不漏掉可能的匹配,而且为了效率,应该尽量的多移动窗口. 先假设窗口移动到了位置k,看看有什么后果,这里i<k≤j+1,大于i好理解,至少移动一个字符嘛,为什么小于等于j+1?因为σ和u[0]是否相等是不知道的,为了不错过可能的匹配,窗口最多移动到j+1.现在看看子串v有什么性质.子…