数据量大的时候使用KMP算法,大大加快时间,自不用说啦。O(n)的时间复杂度
看了一堆博客介绍。。才懂了:因为字符串的一个字串,串头和串尾可能是重复的,,就是前缀和后缀重合了
比如
上一排 红框 左边这个ABCDAB 的前缀和后缀都有AB,那要是ABCDAB不能匹配的话,直接跳过ABCD到红框前面的两个字母AB开始匹配不就结啦。朴素匹配是一次挑一个坑,KMP就是为了少条坑,预先分析好结构啦。这样更有利于多次对模式串的比较。一次预处理,用多次。
数据量大的时候使用KMP算法,大大加快时间,自不用说啦。O(n)的时间复杂度
看了一堆博客介绍。。才懂了:因为字符串的一个字串,串头和串尾可能是重复的,,就是前缀和后缀重合了
比如
上一排 红框 左边这个ABCDAB 的前缀和后缀都有AB,那要是ABCDAB不能匹配的话,直接跳过ABCD到红框前面的两个字母AB开始匹配不就结啦。朴素匹配是一次挑一个坑,KMP就是为了少条坑,预先分析好结构啦。这样更有利于多次对模式串的比较。一次预处理,用多次。