KMP算法主要是是处理与字符串有关的问题的。能在处理好多与字符串有关的问题省去时间,算法的时间复杂度会较常规暴力有很大的优化。
One 求子串t在母串中出现的次数(可重叠匹配 && 不可重叠匹配)
可重叠匹配:当一次匹配成功后,j 继续回退到next[j]向后进行匹配,直到主串s的末尾。(Question one)
不可重叠匹配:当一次匹配成功后,j 继续回退到0向后进行匹配, 直到主串s的末尾。(Question two)
- 下面介绍自己对next数组及kmp()函数核心部分的理解。
KMP算法主要是是处理与字符串有关的问题的。能在处理好多与字符串有关的问题省去时间,算法的时间复杂度会较常规暴力有很大的优化。
可重叠匹配:当一次匹配成功后,j 继续回退到next[j]向后进行匹配,直到主串s的末尾。(Question one)
不可重叠匹配:当一次匹配成功后,j 继续回退到0向后进行匹配, 直到主串s的末尾。(Question two)