即寻找一个母字符串中是否有子字符串
首先可以用朴素算法,即通过两层循环进行查找,时间复杂度会到达O(n*m)。
随后学习到了kmp算法,做到了一个循环便查找成功即时间复杂度到了O([n,2n]+[m,2m])=O(n+m)。([n,2n]是区间)
具体思路是:找到子字符串内部的规律,即找到其内部的前缀和后缀相等的最大个数,并记录每一个下标下的next值,即每一个下标下对应的前面前缀和后缀相等的最大个数的下一个坐标,即next值。通过next数组存储每一个下标下的next值,就可以经过一次循环来判断母字符串是否含有子字符串了。
代码以及注释如下: