$\DeclareMathOperator{\fail}{fail}$ KMP 算法堪称经典中的经典,然而这么多年以来,我却未能完全理解这个算法.我对 KMP 算法掌握的程度,是知其原理,但写不出来. 今天打 CF,遇到一个 KMP 的题目,解法很好想,代码量也不大,我却未能在最后的 17 分钟内 AC.痛定思痛,痛何如哉.今天我要用最详细的语言,把我对 KMP 算法的理解写下来,借此将这个算法印在我心里. 相比于朴素的匹配算法,KMP 算法的优越之处在于不会进行重复比较(或者说不会进行重复匹配…